Как преобразовать QString, содержащий экспоненциальное число, в double в C ++? - PullRequest
0 голосов
/ 15 сентября 2018

Я хочу преобразовать QString("3.285072743893E-04") в double без ущерба для точности.

Когда я использую QString::toDouble, результат будет 0.000328507.

Я где-то читал, что все зависит от того, как отображается значение.

Означает ли это, что преобразование значения в double, QString::toDouble фактически сохраняет его точность, т. Е. Что точность возвращаемого значения типа double не подвергается риску? И что еще более важно, если мы обрабатываем данные, нужно ли беспокоиться о их точности?

1 Ответ

0 голосов
/ 15 сентября 2018

Результат выполнения

QString s1 = "3.285072743893E-04";
double num = s1.toDouble(NULL);
QString s2 = QString::number(num, 'g', 20);
std::cout << s2.toUtf8().constData() << std::endl;

на моей установке (Qt 4.7.3):

0.00032850727438929998173

Как видите, точность сохраняется для всех, кроме последнегоцифра.

...