【发布时间】:2014-06-11 08:40:07
【问题描述】:
我有一个问题。
我有一个小数,我想把它四舍五入到小数点后 2 位,不是用普通方法,而是
0.2013559322033898305084745763
期望的结果:0.21
我该怎么做?
【问题讨论】:
我有一个问题。
我有一个小数,我想把它四舍五入到小数点后 2 位,不是用普通方法,而是
0.2013559322033898305084745763
期望的结果:0.21
我该怎么做?
【问题讨论】:
不是直接的,所以你必须使用一个技巧:
Math.Ceiling(x * 100) / 100;
【讨论】:
听起来您想要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);
}
【讨论】: