在 IEEE754 标准中,float(单精确度浮点数) 型数据由 符号位(sign),指数偏移值(exponent bias),分数值(fraction)组成。那么如果分数值精度不够了,就会涉及到 float 数据的舍入问题。

上面代码的输出结果如下:

可以看到 double 类型和原数一样,而 float 型数据进行了舍入操作。下面来看看 float 的舍入规则。

IEEE标准列出4种不同的方法:

舍入到最接近:舍入到最接近,在一样接近的情况下偶数优先(Ties To Even,这是默认的舍入方式):会将结果舍入为最接近且可以表示的值,但是当存在两个数一样接近的时候,则取其中的偶数(在二进制中是以0结尾的)。

朝0方向舍入:会将结果朝0的方向舍入。

上面的例子就是用的第一种舍入方法,我画了个流程图方便理解: