gpt4 book ai didi

java - java中的 float 和 double 有多少位有效数字?

转载 作者:IT老高 更新时间:2023-10-28 11:52:01 25 4
gpt4 key购买 nike

float 有 32 位二进制数, double 有 64 位二进制数吗?文档太难理解了。

所有位都转换为有效数字吗?还是小数点的位置占用了一些位?

最佳答案

float:32 位(4 个字节),其中 23 位 用于尾数(大约 7 个十进制数字)。 8 位用于指数,因此 float 可以使用这 8 位将小数点向右或向左“移动”。这样做可以避免在尾数中存储大量零,如 0.0000003 (3 × 10-7) 或 3000000 (3 × 107)。有 1 位用作符号位。

double:64 位(8 字节),其中 52 位 用于尾数(大约 16 位十进制数字)。 11位用于指数,1位为符号位。

由于我们使用二进制(只有 0 和 1),所以当数字非零时,尾数中的一位隐含为 1( float 和 double 都使用此技巧)。

此外,由于所有内容都是二进制(尾数和指数),因此转换为十进制数通常不准确。像 0.5、0.25、0.75、0.125 这样的数字被精确存储,但 0.1 不是。正如其他人所说,如果您需要精确存储美分,请不要使用 float 或 double,使用 int、long、BigInteger 或 BigDecimal。

来源:

http://en.wikipedia.org/wiki/Floating_point#IEEE_754:_floating_point_in_modern_computers

http://en.wikipedia.org/wiki/Binary64

http://en.wikipedia.org/wiki/Binary32

关于java - java中的 float 和 double 有多少位有效数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13542944/

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