C# 四舍五入至小数点后4位(C)#
我有价值 8443.64625 并将其四舍五入到小数点后4位。当我使用C# 四舍五入至小数点后4位(C)#,c#,decimal,C#,Decimal,我有价值 8443.64625 并将其四舍五入到小数点后4位。当我使用decimal.Round(8443.64625,4,中点舍入.AwayFromZero)时,它给出值 8443.6463 。因此,它似乎是因为5轮。如何使其返回值 8443.6462 。 我可以将其转换为字符串,然后在4dp后截断,但我觉得必须有一种更有效的方法?您可以使用它,它会很好地工作,只需尝试一次。 它会给你想要的结果。 那是8443.6462 Math.Round(8443.64625, 4) 有人建议使
decimal.Round(8443.64625,4,中点舍入.AwayFromZero)
时,它给出值
8443.6463
。因此,它似乎是因为5轮。如何使其返回值
8443.6462
。
我可以将其转换为字符串,然后在4dp后截断,但我觉得必须有一种更有效的方法?您可以使用它,它会很好地工作,只需尝试一次。 它会给你想要的结果。 那是8443.6462
Math.Round(8443.64625, 4)
有人建议使用
decimal.Round(8443.64625,4,middpointrounding.ToEven)
,但该注释似乎已被删除
中点舍入.ToEven
适用于我发布的场景是,但如果值为8443.64629,则会生成8443.6463。我需要它在不舍入的情况下截断
public static decimal TruncateValue(this decimal num, int significantDigits)
{
decimal y = (decimal)Math.Pow(10, significantDigits);
return Math.Truncate(num * y) / y;
}
我遇到了这个答案,它似乎在4dp后被截断,没有四舍五入
public static decimal TruncateValue(this decimal num, int significantDigits)
{
decimal y = (decimal)Math.Pow(10, significantDigits);
return Math.Truncate(num * y) / y;
}
这很有效
var num = 8443.64625;
var roundedNum = Math.Round(num, 4, MidpointRounding.ToEven);
我不知道这个问题是否已经得到了回答,但是,您可以使用
截断
这不是“舍入”本身,但你会得到我相信你想要的结果
即:
返回
8443.6462
也许你希望将
8443.64629
四舍五入到什么?实际上是四舍五入到最接近的偶数-尝试Math.Round(8445.64635,4)
-它将返回8445.6464
(这不是OP想要的,他们希望返回8445.6463
)@MatthewWatson我想退回8443.6462do@BadDub但是您希望8445.64635
返回什么?(这不是与8445.64625
相同的数字-仔细看!一个以35
结尾,另一个以25
结尾)它适用于我发布的场景是的,但如果值是8443.64629,它将生成8443.6463。我需要它在不舍入的情况下截断。