计算机处理浮点数时的误差处理技巧
通常计算机在处理浮点数时,会产生误差,下面介绍一种方法,可消除部分误差的产生。如:
|
1 2 3 4 5 6 7 8 |
var a,b,c:real; begin a := 68; b := 5.6; c := trunc(a*b*10)/10; ShowMessage(floatToStr(c)); end; |
这个算式的正确结果应该是:380.8,但你试着用计算机执行一下看看结果是什么?奇怪,怎么是380.7呢?呵呵,用下面我教你的方法,计算结果就为380.8了。
|
1 2 3 4 5 6 7 8 |
var a,b,c:real; begin a := 68; b := 5.6; c := trunc(a*b*10+0.00001)/10; ShowMessage(floatToStr(c)); end; |
在算式中加个足够小的小数,理论上不会对你的正确结果造成影响,但它确消除了误差,不信你试试。