Вывести длинный двойной на консоль

Я пытался вывести long double в консоль напрямую, используя qDebug() и косвенно через QString::number() но оба не принимают long double,

Правда ли, что нет простого способа распечатать long double число с плавающей запятой на консоли, используя Qt? Зачем?!

2 ответа

Решение

Там нет всеобъемлющей причины. По крайней мере, в Qt 5.6 никто не удосужился реализовать это. Это все.

Вы можете обеспечить свою собственную перегрузку operator<<():

QDebug& operator<<(QDebug& d, long double f)
{
    return d << static_cast<double>(f);
}

Конечно, это не покажет вам никакой дополнительной точности, но может быть тем, что вам нужно.

Имейте в виду, однако, что в будущей версии Qt такая функция может быть реализована, что нарушает правило One-Definition. Чтобы избежать этого, вы должны охранять его с соответствующим #if проверка для точной версии Qt (или диапазона версий), которую вы проверили, не дает противоречивого определения. Также, пожалуйста, рассмотрите возможность внести свою реализацию в Qt.

Другие вопросы по тегам