이 이중 곱셈 (이중) 1000000007 * (이중) 11111111의 출력은 7로 끝나야합니다 (또는 정확하게 11111111077777777과 같아야 함). 그러나이 코드는 6으로 끝나는 결과를 출력합니다 (정확하게는 11111111077777776과 같습니다). 나는 내가 뭘 잘못하고 있는지 알 수 없다. 어떤 도움이라도 좋을 것입니다.두 개의 큰 이중 숫자를 곱하면 왜 잘못된 결과가 나옵니까?
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << setprecision(40) << (double)1000000007 * (double)11111111;
}
+1 - 이것은 제가 가장 좋아하는 논문 중 하나입니다 – LittleBobbyTables
정확한 두 배의 'double'을 곱하면 완벽하게 정확합니다. 정확하지 않습니다. (당신은 항상 똑같은 대답을 얻을 것이고 그것은 손으로 결정될 수 있습니다, 그러나 당신의 정신 모델이 '실수'라면 실수가 아닙니다. – Yakk
도와 줘서 고마워요! :) –