日期:2014-05-18  浏览次数:20784 次

小数位的“四舍五入”
有一个小数:  
  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 节。这种舍入有时称为就近舍入或银行家舍入。