gpt4 book ai didi

c - C语言100位变量的值

转载 作者:行者123 更新时间:2023-11-30 18:24:00 25 4
gpt4 key购买 nike

所以我是 c 的新手,我刚刚学习了数据类型,令我困惑的是,例如 double 的值范围是从 2.3E-308 到 1.7E+308数学上 100 位数字 ∈ [2.3E-308 , 1.7E+308]。编写这个简单的程序

#include <stdio.h>
int main()
{
double c = 5416751717547457918597197587615765157415671579185765176547645735175197857989185791857948797847984848;
printf("%le",c);
return 0;
}

通过将 %le 更改 %lf,结果为 7.531214e+18 结果为 7531214226330737664.000000不等于 c。那么问题是什么。

最佳答案

这个长数字实际上是 long long 类型的数字文字。 。但由于该类型不能包含这么长的数字,因此它会以 (LLONG_MAX + 1) 为模被截断。并导致 7531214226330737360 .

Demo .

编辑:

@JohnBollinger:...然后转换为 double ,从而导致一些(二进制)精度的损失。

@rici:Demo2 - 这里常量的类型为 double因为添加了小数点

关于c - C语言100位变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46857585/

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