Russian Qt Forum

Программирование => С/C++ => Тема начата: ppk от Апреля 15, 2010, 16:45



Название: Преобразование типов
Отправлено: ppk от Апреля 15, 2010, 16:45
Здравствуйте.
Пишу в коде, допустим, такую строку:
Код:
double d = 25232.875934;

Получаю d равное 25232.8
Пробовал разные значения, но они всегда обрезаются до 6 знаков.
Подскажите, в чем дело?

Заранее спасибо за ответ.



Название: Re: Преобразование типов
Отправлено: Авварон от Апреля 15, 2010, 16:57
что значит "получаю"


Название: Re: Преобразование типов
Отправлено: ppk от Апреля 15, 2010, 16:58
что значит "получаю"
Вывожу через qDebug()<<d или на интерфейс.


Название: Re: Преобразование типов
Отправлено: Amigo_sa от Апреля 15, 2010, 17:18
Здравствуйте.
Пишу в коде, допустим, такую строку:
Код:
double d = 25232.875934;

Получаю d равное 25232.8
Пробовал разные значения, но они всегда обрезаются до 6 знаков.
Подскажите, в чем дело?

Цитировать
QString QString::number ( double n, char format = 'g', int precision = 6 )   [static]
Returns a string equivalent of the number n, formatted according to the specified format and precision.

Соответственно, чтобы вам выводить большую точность, нужно формировать строчку как
Код:
QString formattedNumber = QString::number(n, 'g', 10);
к примеру


Название: Re: Преобразование типов
Отправлено: ppk от Апреля 15, 2010, 17:34
А в qDebug() разве не должно реальное значение выводиться?


Название: Re: Преобразование типов
Отправлено: crossly от Апреля 15, 2010, 17:55
qDebug выводит с помощью QTextStream.... из исходника
Код:
const QLocalePrivate *dd = d->locale.d();
    QString num = dd->doubleToString(f, d->realNumberPrecision, form, -1, flags);
где d->realNumberPrecision=6


Название: Re: Преобразование типов
Отправлено: ppk от Апреля 15, 2010, 18:18
Спасибо всем откликнувшимся.


Название: Re: Преобразование типов
Отправлено: Tonal от Апреля 16, 2010, 08:25
"Реальное" значение числа с плавающей запятой (http://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%B0_%D1%81_%D0%BF%D0%BB%D0%B0%D0%B2%D0%B0%D1%8E%D1%89%D0%B5%D0%B9_%D0%B7%D0%B0%D0%BF%D1%8F%D1%82%D0%BE%D0%B9) не всегда можно представить в конечном десятичном изображении. :)