我有一个double
小数点后17位,即:
double myDouble = 0.12345678901234567;
如果我将其转换为decimal
像这样:
decimal myDecimal = Convert.ToDecimal(myDouble);
那么值myDecimal
是四舍五入的,根据Convert.ToDecimal
文档,最多 15 位(即0.0123456789012345
)。我的问题是,为什么要进行这种舍入?
我明白,如果我的原始数字可以准确地以 10 为基数表示,并且我试图将其存储为double
,那么我们只能对前 15 位数字有信心。最后两位数字可能会出现舍入误差。但是,这是基于 10 的偏见观点。我的号码可能更准确地表示为double
我希望将其转换为decimal
同时尽可能保持准确性。
不应该Convert.ToDecimal
旨在最小化之间的差异myDouble
and (double)Convert.ToDecimal(myDouble)
?
来自双精度文档 http://msdn.microsoft.com/en-us/library/system.double.aspx:
Double 值最多可达15 位小数精度,虽然一个
内部维护最多 17 位数字
因此,由于 double 值本身最多有 15 位小数,因此将其转换为 Decimal 将得到具有 15 位有效数字的 Decimal 值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)