我一直在阅读有关C中浮点精度的问题。我需要9点精度,但我们可以看到这不起作用:
double d_lower = 0.123456789;
double d_upper = 123456789.0;
d_upper = d_upper + d_lower;
printf("d_upper: %.11f\n", d_upper);
// Outputs: d_upper: 123456789.12345679104
// Desired: 123456789.123456789
关于为什么在SO上发生这种情况有各种各样的帖子,例如: Why Are Floating Point Numbers Inaccurate? Why can't decimal numbers be represented exactly in binary?
但我无法找到解决这个问题的任何信息?有办法解决它吗?我需要9分准确度,其他人必须有同样的问题。是否有可能使联合值达到这个目的?
我的C技能是相当基础的,所以我可以理解这个问题,但我不知道如何解决它或解决它。