Точность C ++ по умолчанию для научного c плавающего шестнадцатеричного и десятичного вывода - PullRequest
3 голосов
/ 29 февраля 2020

Тестовая программа ниже использует и 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';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...