我有一个问题。
我有一个小数,我想以2位小数舍入这个,而不是通常的方式,而是
0.2013559322033898305084745763
期望的结果:0.21
我该怎么做?
答案 0 :(得分:4)
不直接,所以你必须使用一个技巧:
Math.Ceiling(x * 100) / 100;
答案 1 :(得分:3)
听起来你想要一个Math.Ceiling
的版本,但需要多个小数位。你可以加倍,使用Math.Ceiling
,然后再划分:
public static double CeilingWithPlaces(double input, int places)
{
double scale = Math.Pow(10, places);
double multiplied = input * scale;
double ceiling = Math.Ceiling(multiplied);
return ceiling / scale;
}
(如果你只当然需要2个小数位,你可以硬编码100的等级,正如Dennis_E的答案所做的那样。)
现在,有两点需要注意:
这将始终围绕,即远离负无穷大。所以它会在-0.201到-0.20之间。如果你想要从0舍入,你可能需要单独处理负值,例如与
if (input < 0)
{
return -CeilingWithPlaces(-input, places);
}