gpt4 book ai didi

java - Java 中 float 的值在赋值时发生变化

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

当我将2.3211232f作为值分配给Java中的float变量时,它被分配为2.3211231那个变量。为什么会发生这种情况?

最佳答案

在 Java 中,浮点值以 2 的幂为单位。对于 2 到 4 之间的数字,float 使用的单位是 2−22。这是因为 float 具有 24 位有效数,因此,当高位表示 21 时(对于 2 到 4 之间的数字来说必须如此),低位表示 2< super>1−23 = 2−22

2−22 是 0.0000002384185791015625,因此 2 到 4 之间的可表示数字以该大小的步长间隔。 2.3211232 附近可表示的数字是:

  • 2.3211228847503662109375
  • 2.3211231231689453125000
  • 2.3211233615875244140625

其中,2.3211231231689453125000 最接近 2.3211232,因此,当源文本 2.3211232f 转换为 float 时,结果为 2.3211231231689453125000。

Java 的默认格式将其显示为“2.3211231”,因为它使用足够的十进制数字来唯一标识该值。它没有显示精确值的所有数字,因此它歪曲了该值。切勿将默认格式的结果作为实际值。

关于java - Java 中 float 的值在赋值时发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58672760/

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