gpt4 book ai didi

c - “ float ”与 'double' 精度

转载 作者:太空狗 更新时间:2023-10-29 16:14:20 26 4
gpt4 key购买 nike

代码

float x  = 3.141592653589793238;
double z = 3.141592653589793238;
printf("x=%f\n", x);
printf("z=%f\n", z);
printf("x=%20.18f\n", x);
printf("z=%20.18f\n", z);

会给你输出

x=3.141593
z=3.141593
x=3.141592741012573242
z=3.141592653589793116

输出的第三行 741012573242 是垃圾,第四行 116 是垃圾。 double 总是有 16 位有效数字,而 float 总是有 7 位有效数字吗?为什么 double 没有 14 位有效数字?

最佳答案

C 使用中的 float IEEE 754编码。

这种类型的编码使用符号、尾数和指数。

由于这种编码,许多数字将进行小的更改以允许它们被存储。

此外,有效数字的数量可能会略有变化,因为它是二进制表示,而不是十进制。

单精度( float )为您提供 23 位有效数字、8 位指数和 1 位符号位。

double (double) 为您提供 52 位有效数字、11 位指数和 1 位符号位。

关于c - “ float ”与 'double' 精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5098558/

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