gpt4 book ai didi

c# - 如何在 C# 中向上或向下舍入?

转载 作者:IT王子 更新时间:2023-10-29 04:31:49 26 4
gpt4 key购买 nike

我尝试过使用 Math.Round 和 MidpointRounding。这似乎没有满足我的需要。

例子:

52.34567 rounded to 2 decimals UP   = 52.35  
1.183 rounded to 2 decimals DOWN = 1.18

我需要编写自定义函数吗?

编辑:

我应该更具体一些。

有时我需要像 23.567 这样的数字来向下舍入到 23.56。在这种情况下...

Math.Round(dec, 2, MidpointRounding.AwayFromZero) gives 23.57
Math.Round(dec, 2, MidpointRounding.ToEven) gives 23.57

9位小数可能会出来,需要四舍五入到1、2、3甚至4位小数。

最佳答案

尝试使用 decimal.Round():

decimal.Round(x, 2)

x 是您的值,2 是您希望保留的小数位数。

您还可以通过传递第三个参数来指定 .5 是向上舍入还是向下舍入:

decimal.Round(x, 2, MidpointRounding.AwayFromZero);

编辑:

鉴于新的要求(即数字有时会向下舍入,尽管大于下一个间隔的“一半”),您可以尝试:

var pow = Math.Pow(10, numDigits);
var truncated = Math.Truncate(x*pow) / pow;

Truncate() 删除小数点的非整数部分。注意上面的numDigits应该是你要保留的位数,而不是小数的总数等。

最后,如果您想强制向上舍入(截断实际上是强制向下舍入),您只需在再次除法之前将 Truncate() 调用的结果加 1。

关于c# - 如何在 C# 中向上或向下舍入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13482159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com