我将一个正则整数转换为浮点数,我发现非常奇怪的是,这取决于我转换的值,在转换之后,LSB可能会翻转一点。
下面是一个例子:
Enter a number: 1313131360
FLOAT:          01001110100111001000100110010111
                        ^
                This is where the mantissa starts
INT(Original):          1001110010001001100101101100000
INT(BackFromFloat):     1001110010001001100101110000000我将数字1313131360转换为float,然后返回到int,你可以看到最后一行的第8位变成了1。
更多的我注意到,如果我输入数字1313131328,它不会改变这一位:
Enter a number: 1313131328
FLOAT:          01001110100111001000100110010110
                        ^
                This is where the mantissa starts
INT(Original):          1001110010001001100101101000000
INT(BackFromFloat):     1001110010001001100101100000000为什么会这样呢?
发布于 2015-12-13 08:22:09
在这两种情况下,转换都是从四舍五入到最近的四舍五入,四舍五入到偶数。在每种情况下,都必须丢弃最后7位。问题是位8的哪个值使浮点数尽可能接近原始输入。
01100000更接近10000000,而不是00000000。
01000000正好是00000000和10000000之间的一半。这将调用平局打破规则,该规则选择将最低有效尾数位设为零的规则。
https://stackoverflow.com/questions/34243589
复制相似问题