我正在阅读Stephen Prata撰写的C Primer Plus,其中介绍浮点数的第一种方法之一是谈论它们在某一点上的准确性.它特别说"C标准规定浮子必须能够代表至少六个有效数字......浮子必须准确表示前六个数字,例如,33.333333"
这对我来说很奇怪,因为它听起来像一个浮点数精确到六位数,但事实并非如此.1.4存储为1.39999 ......依此类推.你还有错误.
究竟提供了什么?数字的准确度是否有截止值?
在C中,如果没有编译器警告,你不能在浮点数中存储超过六个有效数字,但为什么呢?如果你要做六个以上的数字,它似乎就像准确一样.
关于下溢和次正规数的部分使这更令人困惑.当你有一个浮点数最小的数字,除以10,你得到的错误似乎不是正常的?它们似乎只是上面提到的常规舍入误差.
那么为什么这本书说浮点数精确到六位数以及如何与常规舍入误差不同?