圆形双倍到两个小数位
可能重复:
c# – 如何将十进制值舍入到2个小数位(用于页面上的输出)
将双精度数舍入到两位小数的最佳方法是什么,并将其固定为2位小数?
示例:2.346 – > 2.35,2 – > 2.00
我希望避免这样的事情,我必须将double转换为字符串,然后再转换为double,这似乎是一个不好的方法来解决这个问题。
double someValue = 2.346; String.Format("{0:0.00}", someValue);
将值四舍五入到所需的精度,然后对其进行格式化。 总是更喜欢包含中点舍入参数的Math.Round版本。 该参数指定如何将中点值(5)作为最后一位数处理。
如果您没有指定AwayFromZero作为param的值,您将获得默认行为,即ToEven。 例如,使用ToEven作为舍入方法,您将获得:
Math.Round(2.025,2)==2.02
和
Math.Round(2.035,2)==2.04
相反,使用MidPoint.AwayFromZero参数:
Math.Round(2.025,2,MidpointRounding.AwayFromZero)==2.03
和
Math.Round(2.035,2,MidpointRounding.AwayFromZero)==2.04
因此,对于正常的舍入,最好使用以下代码:
var value=2.346; var result = Math.Round(value, 2, MidpointRounding.AwayFromZero); var str=String.Format("{0:0.00}", result );
double someValue = 2.346; string displayString = someValue.ToString("0.00");
请注意,double.ToString(因此string.Format())使用远离零的中点舍入,因此0.125变为0.13。 这通常是显示所需的行为。 显然,这些字符串不应用于往返。
此方法也不适用于数学计算所需的舍入(其中MidpointRounding.ToEven通常是最佳方法)。 在这种情况下,应该使用Math.Round()。
看看Math.Round