Тестовая программа ниже использует и printf, и cout для отображения того, что я думал, должно быть одним и тем же, и они идентичны при запуске на Ma c с использованием Xcode. Однако при запуске на Windows с использованием VS2019 точность шестнадцатеричного результата с плавающей запятой отличается. Я понимаю, что, возможно, смогу отрегулировать точность, чтобы они соответствовали друг другу, но на самом деле это проблема компилятора или проблема, зависящая от легальной реализации?
Output with VS2019:
9.223377e+12 0x1.0c6f83e89c600p+43
9.223377e+12 0x1.0c6f84p+43
Output with Xcode on a Mac:
9.223377e+12 0x1.0c6f83e89c600p+43
9.223377e+12 0x1.0c6f83e89c600p+43
#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
long double x = 9223377208547.0L;
printf("%Le %La\n", x, x);
cout << scientific << x << ' ' << hexfloat << x << '\n';
}