读书人

小数位的“四舍五入”解决思路

发布时间: 2012-12-24 10:43:13 作者: rapoo

小数位的“四舍五入”
有一个小数:
double test = 16.9877845897513902

如何使“test”只有一位小数,数值四舍五入,依然为“double”类型???
[解决办法]
参考
c# 四舍五入、上取整、下取整
[解决办法]
写一个方法,传入数值,返回Double...
[解决办法]
double test = 16.9877845897513902;
string s = test.ToString("0.0");
test = Convert.ToSingle(s);
[解决办法]
.Net有四舍五入的api,

double dbResult=Math.Round(test,1);
[解决办法]
如果要自己写也很简单:

double dbResult=((int)(test*10.0+0.5))/10.0;
[解决办法]
double test = 16.9877845897513902;
test = Convert.ToDouble(test.ToString("f2"));
[解决办法]
double test = 16.9877845897513902;
string s = test.ToString("0.0");
test = Convert.ToSingle(s);
---------------------------
一个 Math.round 就能搞定的问题,居然被你写成这种天怒人怨的代码
[解决办法]
Math.Round()是「四舍六入五凑偶」,不是「四舍五入」。科学计算中很常用。

MSDN解释:

引用
最接近 a 的整数。如果 a 为两个整数的中值,这两个整数一个为偶数,另一个为奇数,则返回偶数。

此方法的行为遵循 IEEE 标准 754 的第 4 节。这种舍入有时称为就近舍入或银行家舍入。

读书人网 >C#

热点推荐