@CPPJunior

Почему число неправильно конвертируется в строку?

Здравствуйте.
Недавно обнаружил непонятную хрень, связанную с QString, а именно с преобразованием double в QString:
std::ofstream debug("debug.txt");

debug << "QString::number(5120.0) = " << QString::number(5120.0).toStdString() << std::endl;
debug << "QString::number(5121.0) = " << QString::number(5121.0).toStdString() << std::endl;
debug << "QString::number(5122.0) = " << QString::number(5122.0).toStdString() << std::endl;

debug << "QString(\"%1\").arg(5120.0) = " << QString("%1").arg(5120.0).toStdString() << std::endl;
debug << "QString(\"%1\").arg(5121.0) = " << QString("%1").arg(5121.0).toStdString() << std::endl;
debug << "QString(\"%1\").arg(5122.0) = " << QString("%1").arg(5122.0).toStdString() << std::endl;

debug.close();

Результат работы:
QString::number(5120.0) = 5120
QString::number(5121.0) = 5120.:
QString::number(5122.0) = 5122
QString("%1").arg(5120.0) = 5120
QString("%1").arg(5121.0) = 5120.:
QString("%1").arg(5122.0) = 5122

Т.е. число 5121.0 по непонятным мне причинам конвертируется в "5120.:". В связи с этим у меня возникла пара вопросов:
  1. Кто нибудь встречался с подобным?
  2. Кто нибудь может проверить код, будет ли результат тем же?
  3. В чем может быть дело?

Заранее спасибо!
P.S.: Qt 4.8.6 + Qt Creator + Visual C++ 2008.

Update:
Пробовал qt 4.8.7 та же история. На qt 5.4.1 + msvc2013, кстати, все ок.
Кроме того создавал тестовый проект, в котором проверял конвертацию и все оказалось нормально, т.е. число нормально конвертируется в строку как и ожидается. Насколько я понимаю, все методы в конце концов используют QLocale::toString, так что скорее всего у меня что то с локалью
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы