【发布时间】:2010-10-10 02:26:40
【问题描述】:
我想知道是否有办法克服似乎是我的机器内部浮点数表示导致的准确性问题:
为了清楚起见,问题总结如下:
// str is "4.600"; atof( str ) is 4.5999999999999996
double mw = atof( str )
// The variables used in the columns calculation below are:
//
// mw = 4.5999999999999996
// p = 0.2
// g = 0.2
// h = 1 (integer)
int columns = (int) ( ( mw - ( h * 11 * p ) ) / ( ( h * 11 * p ) + g ) ) + 1;
在转换为整数类型之前,列计算的结果是 1.9999999999999996;距离 2.0 的预期结果如此接近,但距离如此之远。
欢迎提出任何建议。
【问题讨论】:
-
这个问题之前有人问过并回答过......只是在寻找它......
-
阅读数值分析,在某些情况下这是一个大问题。也许使用其他(但速度较慢)数学库,如 BigDecimal 等......
标签: c++ floating-point floating-accuracy