我有一個小數叫'總和',它的值是5824088.999120m
,但是當我嘗試將它舍入到3位小數時,我得到5824088.998m
而不是5824088.999m
。它遞減而不是離開5824088.999m
。十進制不正確舍入
爲什麼?這裏是我的代碼:
List<decimal> quantityList = QuantityList();
List<decimal> priceList = PriceList();
decimal destination = 5824088.999M;
decimal sum = 0M;
bool lifesaver = false;
for (int x = 0; x < priceList.Count; x++)
{
sum = 0M;
for (int i = 0; i < 3500; i++)
{
priceList[x] += 0.001M;
sum = 0M;
for (int y = 0; y < priceList.Count; y++)
{
decimal multipleProduct = priceList[y] * quantityList[y];
sum = sum + multipleProduct;
Console.WriteLine(priceList[y] + " " + quantityList[y]);
sum = Math.Round(sum, 3);
Console.WriteLine("Sum: " + sum);
Console.ReadKey();
Console.WriteLine();
}
if (sum == destination)
{
Console.WriteLine("The new number is " + priceList[x] + " and it is the {0} element!", x);
lifesaver = true;
break;
}
else if (sum > destination)
{
Console.WriteLine("Limit exceeded!");
}
if (i == 3499)
{
priceList[x] -= 3.500M;
}
if (lifesaver == true)
{
break;
}
}//Second for loop
if (lifesaver == true)
{
break;
}
}//Main for loop
該列表是在另一種方法。
@Reza Taibur:*刪除/註釋掉*'sum = Math.Round(sum,3);' - 只是在循環內不加整數*(過早地),僅添加值並在打印時格式化它們。如果你想收起來,在*循環後執行* –
謝謝!沒有在循環工作中四捨五入! –