gpt4 book ai didi

java - 浮点加法 - 给出奇怪的结果..!

转载 作者:行者123 更新时间:2023-12-02 06:02:09 25 4
gpt4 key购买 nike

执行以下代码时:

public class FPoint {
public static void main(String[] args) {
float f = 0.1f;
for(int i = 0; i<9; i++) {
f += 0.1f;
}
System.out.println(f);
}
}

显示以下输出:

1.0000001

但输出应该是 1.0000000 , 对?如果我错了纠正我..!!

最佳答案

对于 IEEE 754 标准,0.1 并不是真正的“0.1”。

0.1 编码:0 01111011 10011001100110011001101 (带浮点数)

  • 0 是符号(= 正)
  • 01111011 指数 (= 123 -> 123 - 127 = -4 (127 是 IEEE 754 中的偏差))
  • 10011001100110011001101尾数

  • 要将尾数转换为十进制数,我们有
    1.10011001100110011001101*2^ -4 (base2) [1.xxx 在 IEEE 754 中是隐含的]

    = 0.000110011001100110011001101(base2)

    = 1/2^4 + 1/2^5 + 1/2^8 + 1/2^9 + 1/2^12 + 1/2^13 + 1/2^16 + 1/2^17 + 1/2^20 + 1/2^21 + 1/2^24 + 1/2^25 + 1/2^27 (base10)

    = 1/16 + 1/32 + 1/256 + 1/512 + 1/4096 + 1/8192 + 1/65536 + 1/131072 ...(base10)

    = 0.10000000149011612 (base10)

    关于java - 浮点加法 - 给出奇怪的结果..!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19088028/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com