无精度的双值减法

double value subtraction without precision

本文关键字:精度      更新时间:2023-10-16
int base = 12;
double number = 12.2112;
double c = number - base;
//// c=0.211199999999999983   

这是c++代码,如何得到结果:c= 0.2112,

0.2112不能精确地用浮点数表示:https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems

如果精确地表示0.2112对你来说非常重要,那么通常的解决方案看起来有点像这样:

int base = 120000;
int number = 122112;
int c = number - base;
cout << "Value of c: " << (c / 10000.0) << endl;

但是,要知道我们在这里做的是实现定点数。如果您需要在实现中实现定点数,那么研究并实现一个完整的定点类可能是值得的,它可以完成您在这里尝试完成的所有操作。