14.2浮点计算很奇怪,不同机器有不同结果
如果问题并不是那么简单, 那么回想一下, 电脑一般都是用一种浮点的格式来 近似的模拟实数的运算, 注意是近似, 不是完全。下溢、误差的累积和其它非常规 性是常遇到的麻烦。
不要假设浮点运算结果是精确的, 特别是别假设两个浮点值可以进行等价比 较。也不要随意的引入“模糊因素”; 参见问题14.5。
这并不是C 特有的问题, 其它电脑语言有一样的问题。浮点的某些方面被通常定义为“中央处理器(CPU) 是这样做的” (参见问题11.34), 否则在一个没有“正确” 浮点模型的处理器上, 编译器要被迫做代价非凡的仿真。
本文不打算列举在处理浮点运算上的潜在难点和合适的做法。一本好的有关数字编程的书能涵盖基本的知识。参见下面的参考资料。
参考资料: [K&P, Sec. 6 pp. 115-8]; [Knuth, Volume 2 chapter 4]; [Goldberg]。
不要假设浮点运算结果是精确的, 特别是别假设两个浮点值可以进行等价比 较。也不要随意的引入“模糊因素”; 参见问题14.5。
这并不是C 特有的问题, 其它电脑语言有一样的问题。浮点的某些方面被通常定义为“中央处理器(CPU) 是这样做的” (参见问题11.34), 否则在一个没有“正确” 浮点模型的处理器上, 编译器要被迫做代价非凡的仿真。
本文不打算列举在处理浮点运算上的潜在难点和合适的做法。一本好的有关数字编程的书能涵盖基本的知识。参见下面的参考资料。
参考资料: [K&P, Sec. 6 pp. 115-8]; [Knuth, Volume 2 chapter 4]; [Goldberg]。