爲什麼這段代碼在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