ubi*_*con 2 java floating-point ieee-754
27.8675309在IEEE 754转换器的"十进制表示"字段中输入一个值会更改我输入的值27.86753.同样,当解析具有相同值的字符串时,Java会丢弃最后两位数字.
Float.parseFloat("27.8675309") // Results in a float value of 27.86753
Run Code Online (Sandbox Code Playgroud)
我不确定IEEE转换器的"十进制表示"实际上是什么(它是浮点数吗?)但是我希望它能给出最大数量:
我希望Java能够以类似的方式运行,也就是说,我希望上面的代码行返回一个浮点值等于27.8675308或者更大的浮点值,它更接近我的原始输入,而不是只丢弃小数位.我在这里错过了什么?
这是预期的.
如果你看一下27.8675309的二进制表示(27.867530822753906为双):
01000001110111101111000010110100
Run Code Online (Sandbox Code Playgroud)
下一个最高值是:
01000001110111101111000010110101
Run Code Online (Sandbox Code Playgroud)
产生27.867533(27.86753273010254为双),下一个最低值为:
01000001110111101111000010110011
Run Code Online (Sandbox Code Playgroud)
产量27.867529(27.867528915405273为双)
a的尾数中没有足够的位Float来表示其间的任何值,因此您的值以十进制向下舍入为27.867530
| 归档时间: |
|
| 查看次数: |
320 次 |
| 最近记录: |