2014-11-03 485 views
-1

我正在尝试使用C#将数字舍入到下一个数字。例如:如何将数字四舍五入到小数点后两位

0.409 -> 0.41 
0.401 -> 0.41 
0.414 -> 0.42 
0.499 -> 0.50 
0.433 -> 0.44 

有没有办法使用.NET内置函数来做到这一点?

+2

*我试图围捕号码使用C#*证明这一点[问] – Plutonix 2014-11-03 13:32:33

+0

@LuisFilipe:我不知道他会因为他不想传统的四舍五入... – Chris 2014-11-03 13:34:14

+0

@LuisFilipe这将0.401到0.41? – Reniuz 2014-11-03 13:38:05

回答

5

Math.Ceiling可以使用。

Math.Ceiling四舍五入为最接近的整数的,所以我建议你做一些师/乘法也:

var notRounded = 0.409; 
var rounded = Math.Ceiling(notRounded * 100)/100; 

说明:notRounded * 100为您提供了40.9Math.Ceiling将返回,所以再次将其重新分为'还原'回原始小数形式:0.41

+0

感谢您的编辑,错过了那一个。 – 2014-11-03 13:46:06

+0

确保使用'decimal'而不是'double',因为'double'是一个浮点数据类型。 – 2014-11-03 13:49:50

+0

它的工作,但它可以用来四舍五入到小数点后1位吗?例如:0.401到0.5而不是0.41。 – user2506496 2014-11-03 13:50:14

1

一种方法是Math.Ceiling作为already described

另一种方法是计算余,并添加区别围捕:

decimal r = 0.409M; 
decimal d = r % .01M > 0 ? (r + .01M - r % .01M) : r; 
+2

它也很好。谢谢。 – user2506496 2014-11-03 13:54:22

相关问题