Fak*_*ken 2 c++ floating-point
这是一个让我在过去几个小时里完全感到困惑的问题......
我的程序中有一个硬编码的等式:
double s2;
s2 = -(0*13)/84+6/42-0/84+24/12+(6*13)/42;
Run Code Online (Sandbox Code Playgroud)
每次我运行该程序时,计算机会吐出3作为答案,但是手动进行数学计算,我得到4.更进一步,在将方程式输入Matlab之后,我也得到了答案4.这里有什么进展?
我唯一能想到的就是这里出错了就是圆满错误.然而,最多有5个舍入误差,再加上使用双精度数学,我的最大误差将非常小,所以我怀疑这是问题所在.
有谁能提供任何解决方案?
提前致谢,
-Faken
Amb*_*ber 17
你实际上并没有在那里进行浮点数学运算,你正在进行整数运算,这将使得除法的结果成为可能.
在C++中,5/4 = 1,而不是 1.25 - 因为5和4都是整数,所以结果将是一个整数,因此结果的小数部分被丢弃.
另一方面,5.0/4.0将等于约.1.25因为5.0和4.0中至少有一个是浮点数,所以结果也是浮点数.
| 归档时间: |
|
| 查看次数: |
1075 次 |
| 最近记录: |