奉上第三章编程练习答案,同时附加一点个人讨论:
在第七题中,题目要求我们通过float.h头文件的FLT_DIG和DBL_DIG两个明示常量了解float和double两种浮点数类型的有效数字位数,笔者手中DEV-C++,分别给出的有效数字是6位和15位。
对于floa类型来说,小数点后显示第6位显然是可以办到的,而显示12位和16位时第6位有效位数之后就出现了随即数字(后续发现红色下划线标注的超出部分实际上不是无意义的随机数,是一个确切的计算值),明显超过了float类型的范围。
但观察double类型的16位显示时可以发现,超过了第15位有效数字的16位依旧是正确显示,回看float发现第7位的显示也是正确(两个蓝框内依旧是3)。
这是否代表实际上float和double的实际有效数字比头文件给出的多一位呢?
再次通过计算9/17和5/23发现了更为有趣的部分:
和我手中的计算器计算结果相比,对于9/17float