如何在C#中将数字四舍五入到小数点后一位?

19
我正在尝试理解如何使用C#将数字四舍五入到最近的十分位。例如,我有一个double类型的值。这个double值当前设置为10.75。然而,我需要将其四舍五入并截断小数点后的所有位数,以得到10.8这个值。在C#中,如何将数字四舍五入到十分位?

2
既然你显然知道math.round,那么它似乎对你不起作用。你能展示一下你尝试过的内容,并解释一下它与你预期的有何不同吗? - Joel Coehoorn
5个回答

41
Math.Round(yourNumber, 1)

第二个参数是要舍入的小数位数。在您的情况下,您希望结果保留1位小数。


18

你只需要使用带有decimals参数的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

8

由于您在标题中使用了Math.Round(),我假设您已经尝试了基本的Math.Round(10.75,1)方法,并且它返回了您不希望看到的内容。因此,建议您查看一些不同的函数重载,特别是接受MidPointRounding枚举的函数重载:

http://msdn.microsoft.com/en-us/library/f5898377.aspx


非常奇怪的默认行为并不是“标准数学行为”。 - Juan Pablo Gomez
1
“标准数学行为”实际上在很大程度上取决于上下文。 - Joel Coehoorn

4

你真的需要四舍五入吗?还是只需要格式化输出但保留变量本身的精度呢?就像这样:

decimal value = 10.75;
value.ToString ("#.#");

2
如果您只想“截取”小数点后面的所有内容,可以使用以下方法:
   return Math.Round(value * 10)/10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接