为什么这段代码在ris1和ris2上给我2个不同的结果?算术双重表达式和c/C++
他们为什么不等于?
#include <iostream>
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <time.h>
using namespace std;
int main() {
double x1 = 0.4628471891711442;
double h = 0.51152525298500628;
double lambda = 0.99999999999999989;
double t = 0.10000000000000001;
double ris1 = 0;
double ris2 = 0;
ris1 = x1 - (h * exp(-lambda * t));
double sub = h * exp(-lambda * t);
ris2 = x1 - sub;
printf("\n\nris1 = %1.4e", ris1);
printf("\n\nris2 = %1.4e", ris2);
return 0;
}
结果:
ris1 = 8.9257e-017
ris2 = 1.1102e-016
我在Eclipse中MinGW的工作。 这里我的mingw安装框架:http://ctrlv.in/638751
这是所有的代码?我不认为这是事实,问题必须在其他地方。因为这个代码是没有问题的。您是否尝试过在独立的编译单元中测试代码?请注意,这两个值都不正确。答案是'5.5511e-17'。 –
你能告诉我们更多关于你运行你的代码的环境吗?我无法重现您的问题。特别是我希望你发布标准库的版本,编译器和用于编译的所有选项(特别是优化相关的)以及运行代码的处理器数据。 – mszymborski
我正在使用mingw和eclipse – andrea