当我们运行一下代码
double s = 0.18 * 10; Console.WriteLine( s.ToString()); double p= 4 / 2.0; Console.WriteLine( p);
会的到 如下结果
0.18 * 10 不等于18
这就是精度丢失
系统是基于二进制的
double 64位 双精度 有效数字为53位 而 double--0.18 转为二进制 位数多余53 则多出的位数被丢弃 便出现了精度丢失
【注】 framework452 有优化 0.18*100=18