Ahm*_*sud 2 c++ double subtraction
我想从double获取小数部分,这是我的代码来获取小数部分
double decimalvalue = 23423.1234-23423.0;
0.12340000000040163
Run Code Online (Sandbox Code Playgroud)
但减法后我期待十进制值为0.1234,但我得到0.12340000000040163.请帮助我理解这种行为,以及是否有任何解决方法.
我建议你看看
您可以在浮点数中指定有限数量的值,但在所表示的范围内有无限数量的浮点数.
因此,某些浮点数无法在任何浮点/双样式数据类型中准确表示.
处理您的特定问题的典型方法是避免直接的平等的比较,而是做一个小量测试:看看预期值和计算值都内的一些少数(相对于所减去的值),被称为小量对方, .
间接相关的是Machine Epsilon的概念,值得看一看完整的理解