使用浮点类型致使计算偏差以及判断偏差

1.计算偏差spa

浮点的精度是可变的,除非分数是2的整数幂次方,否者没法用有限的二进制小数表示。ci

即 0.1 分母为10, 则分数应该是2的3次方至2的4次方之间,具体是多少我也算不出来了···。即这个次方数会为一个特别长的小数,在有限的长度中没法体现出来。二进制

则0.1会被表示为一个十分接近0.1的值,如0.1000000000000000001 或0.099999999999999999float

因此在精确的计算中,使用浮点类型会形成计算的偏差。im

使用decimal能够解决此问题,不过decimal的范围比浮点类型来讲相对较小,因此在将浮点类型转换成decimal类型时,有溢出的风险。类型转换

2.判断偏差

基于上述解释

float num1=0.1F;

decimal num2=0.1M;

则 num1!=num2;

相关文章
相关标签/搜索