您这里确实有两个问题。
为什么有人需要浮点数学呢?
正如卡尔·比勒费尔特(Karl Bielefeldt)所指出的那样,浮点数使您可以对连续的数量进行建模-并且您可以在整个地方找到这些数量-不仅在物理世界中,甚至在诸如商业和金融领域。
我在编程职业的许多领域都使用过浮点数学运算:化学,在AutoCAD上工作,甚至编写了Monte Carlo仿真器进行财务预测。实际上,有一个叫David E. Shaw的家伙,他将基于浮点的科学建模技术应用于华尔街,赚了数十亿美元。
当然,还有计算机图形学。我咨询开发用于用户界面的糖果的方法,而如今在没有扎实的浮点,三角学,微积分和线性代数的理解的情况下,这样做似乎就像在用一把小刀进行枪战。
为什么有人需要浮动还是双重浮动?
使用IEEE 754标准表示形式,32位浮点数可为您提供约7个十进制数字的精度,并且指数范围为10 -38到10 38。64位双精度数为您提供大约15个十进制数字的精度,指数范围为10 -307到10 307。
浮动似乎足以满足任何人的合理需求,但事实并非如此。例如,许多现实世界中的数量用7个以上的十进制数字表示。
但更巧妙地讲,存在一个通俗地称为“舍入错误”的问题。二进制浮点表示法仅适用于小数部分的分母为2的幂的值,例如1 / 2、1 / 4、3 / 4等。要表示其他小数,例如1/10,请“四舍五入”值最接近的二进制分数,但这有点错误-这就是“舍入误差”。然后,当您对那些不准确的数字进行数学运算时,结果中的不准确性可能会比开始时要严重得多-有时错误百分比会成倍增加,甚至呈指数增长。
无论如何,您必须使用的二进制数字越多,四舍五入的二进制表示形式与您要表示的数字越接近,因此其舍入误差会更小。然后,当您对其进行数学运算时,如果要处理的数字很多,则可以在累积舍入误差累积成问题之前进行更多的操作。
实际上,具有15个十进制数字的64位双精度对于许多应用程序来说还不够好。我在1985年使用80位浮点数,而IEEE现在定义了一个128位(16字节)浮点类型,我可以想象使用这种类型。