我正在努力解决"C编程语言"中的练习2.1,其中一个人应该在本地机器上计算不同类型的范围,如char,short,int等,还可以浮动和加倍.通过除浮动和双重之外的所有内容我会注意溢出发生,因此可以计算最大/最小值.然而,通过浮动,这仍然无法正常工作.
那么,问题是为什么这段代码两次打印相同的值?我认为应该打印第二行inf
float f = 1.0;
printf("%f\n",FLT_MAX);
printf("%f\n",FLT_MAX + f);
Run Code Online (Sandbox Code Playgroud)
尝试乘以10,如果会溢出.它没有溢出的原因与为一个已经非常大的浮点数添加一个小浮点数实际上根本没有改变它的原因相同 - 它是一个浮点格式,这意味着精度的位数有限.
或者,至少添加最后一个有效数字可能会起作用:
float f = 3.402823e38f; // FLT_MAX
f = f + 0.000001e38f; // this should result in overflow
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |