我正在尝试使用 GSL 创建直方图。当我尝试将分区 1470/100 的值添加到直方图时遇到问题。 这导致 14.69999999,当添加到直方图时,它会四舍五入到较低的 bin。 我的问题是如何使 1470/100 结果为 14.7 而不是 14.69999? 谢谢
编辑:
int minRange = 14;
double val;
val = minRange + j*0.05;
gsl_histogram_increment(hist, val);
当将 val 添加到直方图时,它被认为是 14.65 而不是 14.7。 (在这种情况下 j 是 14)。
我通过将 1e-6 添加到 val 解决了这个问题。谢谢你的帮助
最佳答案
这是一个浮点精度问题。解决问题的一个好方法是将直方图点设置为刚好接近积分值,例如15 - e
其中 e
的顺序为 10-6。
关于C++ 舍入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17297101/