【发布时间】:2009-10-05 16:13:33
【问题描述】:
我试图了解如何使用 C# 舍入到最接近的十分位。例如,我有一个 double 类型的值。这个双倍目前设置为 10.75。但是,我需要四舍五入然后截断十位以上的所有内容。在这种情况下,我正在寻求 10.8 的值。 C#如何四舍五入到十分位?
谢谢!
【问题讨论】:
-
既然您显然知道 math.round,听起来好像它对您不起作用。您能否展示您的尝试并解释它与您的预期有何不同?
我试图了解如何使用 C# 舍入到最接近的十分位。例如,我有一个 double 类型的值。这个双倍目前设置为 10.75。但是,我需要四舍五入然后截断十位以上的所有内容。在这种情况下,我正在寻求 10.8 的值。 C#如何四舍五入到十分位?
谢谢!
【问题讨论】:
Math.Round(yourNumber, 1)
第二个参数是要四舍五入的小数位数。在您的情况下,您需要 1 个小数位作为最终结果。
【讨论】:
您只需要使用带有decimals 参数的overload of Math.Round。
Math.Round(10.75, 1) // returns 10.8
只是为了比较:
Math.Round(10.75) // returns 11
Math.Round(10.75, 0) // returns 11
Math.Round(10.75, 2) // returns 10.75
【讨论】:
由于您在标题中使用了Math.Round(),我假设您已经尝试了基本的Math.Round(10.75,1) 方法,并且它返回了您意想不到的结果。考虑到这一点,我建议查看该函数的一些不同重载,特别是接受 MidPointRounding 枚举的重载:
【讨论】:
您真的需要对其进行四舍五入,还是可以将其格式化以便打印,但让变量本身保持其精度?比如:
decimal value = 10.75;
value.ToString ("#.#");
【讨论】:
如果你只想“删减”小数点后的所有内容,这应该可行:
return Math.Round(value * 10)/10
【讨论】: