我拿了一个常规整数并将其转换为浮点数,我发现很奇怪的是这取决于我正在转换的值,转换后LSB可以稍微翻转一下。
以下是一个例子:
Enter a number: 1313131360
FLOAT: 01001110100111001000100110010111
^
This is where the mantissa starts
INT(Original): 1001110010001001100101101100000
INT(BackFromFloat): 1001110010001001100101110000000
我取了数字1313131360并将其转换为浮点数,然后返回到int,你可以看到最后一行中第8位变为1。
更多我注意到,如果我输入数字1313131328,它不会改变这一位:
Enter a number: 1313131328
FLOAT: 01001110100111001000100110010110
^
This is where the mantissa starts
INT(Original): 1001110010001001100101101000000
INT(BackFromFloat): 1001110010001001100101100000000
为什么?
答案 0 :(得分:0)
在这两种情况下,转换都在进行舍入到最接近的舍入,并且关系是均匀的。在每种情况下,必须删除最后7位。问题是第8位的哪个值使浮点数尽可能接近原始输入。
01100000接近10000000而不是00000000。
01000000正好在00000000和10000000之间的中间位置。这将调用tie tie规则,该规则选择使最不重要的尾数位为零的规则。