この二重乗算 (double)1000000007 * (double)11111111 の出力は 7 で終わる必要があります (正確には 11111111077777777 に等しい)。しかし、私が書いたこのコードは、6 (正確には 11111111077777776 に等しい) で終わる結果を出力します。何が間違っているのかわかりません。どんな助けでも素晴らしいでしょう。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << setprecision(40) << (double)1000000007 * (double)11111111;
}