Результат для этого двойного умножения (double)1000000007 * (double)11111111 должен заканчиваться на 7 (или быть точным, равным 11111111077777777). Но этот фрагмент кода, который я написал, выводит результат, оканчивающийся на 6 (или, если быть точным, равным 11111111077777776). Я не могу понять, что я могу делать неправильно. Любая помощь будет здорово.
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << setprecision(40) << (double)1000000007 * (double)11111111;
}