以下C#代码显示0.1-为什么?
var s = "0.1";
var dbl = Double.Parse(s);
var dcml = Convert.ToDecimal(dbl);
Console.WriteLine(dcml.ToString());
0.01不是不能用二进制表示的,因此应该打印0.100000001490116吗?
的值dbl
正好是0.1000000000000000055511151231257827021181583404541015625。
那是0.1到17个有效数字。
在对文档Convert.ToDecimal(Double)
状态:
此方法返回的Decimal值最多包含15个有效数字。如果value参数包含15个以上的有效数字,则使用舍入到最接近的值将其舍入。
从Single
(aka float
)进行的转换已记录在案,以便更早地截断:
此方法返回的Decimal值最多包含七个有效数字。如果value参数包含七个以上的有效数字,则使用四舍五入到最接近的数字进行四舍五入。
如果Convert.ToDecimal(Double)
使用初始转换为0.1f的值进行调用,它将显示0.100000001490116:
double dbl = 0.1f;
decimal dcml = (decimal) dbl;
Console.WriteLine(dcml);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句