C# 为什么我的十进制数是负数?

C# 为什么我的十进制数是负数?,c#,C#,以下是我如何调用以下函数: List<decimal> numbers = new List<decimal>(); numbers.Add(210m); numbers.Add(188.83m); numbers.Add(67.93m); numbers.Add(125.92m); numbers.Add(35.92m); numbers.Add(19.16m); numbers.Add(98.48m);

以下是我如何调用以下函数:

    List<decimal> numbers = new List<decimal>();

    numbers.Add(210m);
    numbers.Add(188.83m);
    numbers.Add(67.93m);
    numbers.Add(125.92m);
    numbers.Add(35.92m);
    numbers.Add(19.16m);
    numbers.Add(98.48m);



    List<decimal> listresult = FindSumSubset(9075.12m, numbers);
列表编号=新列表();
数量。添加(210m);
增加(188.83米);
增加(67.93米);
数字。加上(125.92米);
增加(35.92米);
增加(19.16米);
增加(98.48米);
列表结果=FindSumSubset(9075.12m,数字);
************函数*

List FindSumSubset(十进制和,列表)
{
for(int i=0;i
在调试模式下运行时,
十进制和
会给我一个巨大的负值,如
-93435.34


这是怎么发生的?

尝试进行以下更改:

if (sum - value <= 0.0m)

if(sum-value尝试进行此更改:

if (sum - value <= 0.0m)

if(sum-value你溢出了,没有检查是我的猜测。

你溢出了,没有检查是我的猜测。

你的else案例在for循环之外,这是一个输入错误吗?检查你的代码。在for循环之后有一个else子句。我想我修复了代码(恢复了以前的一些编辑),但现在
新列表{value};
不会编译。如果你能用英语告诉我们这应该做什么,这将很容易。你的else案例在for循环之外,这是一个拼写错误吗?检查你的代码。在for循环之后有一个else子句。我想我已经修复了代码(恢复了以前的一些编辑),但现在
新列表{value}
不会编译。如果你能用英语告诉我们这应该做什么,这将很容易。我认为十进制不会溢出。它是一个浮点,如果它太大而不是使用无穷大值,我认为它甚至会抛出异常。我认为十进制不会溢出。它是一个浮点,我认为它甚至会抛出异常如果它变得太大而不是使用无穷大值,则为ns。