在.NET里面,我用的一个数据是double类型。
但是,在处理时候,我发现如下情况:
double d = 0.30000000000000004;
Console.Writeline("d=" + d.ToString());打印出来的值居然是: d=0.3
很是困惑!(导致我的程序很久才发现,一个很严重的bug是由这个引起的。)各位多多指教!
但是,在处理时候,我发现如下情况:
double d = 0.30000000000000004;
Console.Writeline("d=" + d.ToString());打印出来的值居然是: d=0.3
很是困惑!(导致我的程序很久才发现,一个很严重的bug是由这个引起的。)各位多多指教!
而且高精度的数值计算要用decimal
在double d = 0.30000000000000004;
之后设置断点
你看d的值是 0.30000000000000004,一点都没错。就是后面的.ToString()就不对了。
double ±5.0 × 10−324 to ±1.7 × 10308 15-16 digits System..::.Double
double/ ±5.0 × 10−324 to ±1.7 × 10308/ 15-16 digits /System..::.Double
具体它是怎么转换的不知道
但是,的确你这样的数字,就不应该用double,而应该改用decimal你可以看看这个double精度
decimal d = 0.30000000000000004m;
Console.WriteLine(d);//0.30000000000000004
额,哥们,谁说的.NET里面没有float哦?