Russian Qt Forum

Qt => Общие вопросы => Тема начата: Barmaglodd от Июнь 09, 2009, 11:20



Название: Перевод числа с плавающей запятой в строку
Отправлено: Barmaglodd от Июнь 09, 2009, 11:20
Как перевести число с плавающей запятой(double) в строку с учётом локали, с заданным числом знаков после запятой, не выводя нули на конце.
Например, выводим числа с точностью до пятого знака.
10,123 -> 10,123 (а не 10,12300)
125 ->125 (а не 125,00000)

Есть ли какой-нибудь встроенный в Qt способ это сделать? Или только "руками": переводим через QLocale в строку, обрезаем нули и запятую в конце.


Название: Re: Перевод числа с плавающей запятой в строку
Отправлено: spirit от Июнь 09, 2009, 11:24
в описалове QLocale вроде ж были примеры.


Название: Re: Перевод числа с плавающей запятой в строку
Отправлено: Barmaglodd от Июнь 09, 2009, 11:44
Нет или я плохо ищу :(


Название: Re: Перевод числа с плавающей запятой в строку
Отправлено: spirit от Июнь 09, 2009, 11:47
оно (http://doc.qtsoftware.com/4.5/qlocale.html#details)?


Название: Re: Перевод числа с плавающей запятой в строку
Отправлено: Barmaglodd от Июнь 09, 2009, 12:00
А толку-то? Я про это и так написал, мне не нужны нули на конце строки. При указании формата 'f', строка заполняется ими до указанного количества знаков после запятой.


Название: Re: Перевод числа с плавающей запятой в строку
Отправлено: Rcus от Июнь 09, 2009, 12:04
Значит нет нужного: в режиме 'f' нули не обрезаются, а в режиме 'g' - ненужное переключение на экспоненциальную форму представления


Название: Re: Перевод числа с плавающей запятой в строку
Отправлено: spirit от Июнь 09, 2009, 12:07
Код
C++ (Qt)
qDebug() << QLocale::system().toString(125.000000, 'f', 0);
qDebug() << QString::number(125.000000, 'f', 0);
 
результат
Цитировать
125
125
в чем проблема?  ???


Название: Re: Перевод числа с плавающей запятой в строку
Отправлено: Barmaglodd от Июнь 09, 2009, 12:21
Я говорил о

Код:
QLocale::system().toString(125.000000, 'f', 5);

а не

Код:
QLocale::system().toString(125.000000, 'f', 0);

;)

Я явно задаю 5 знаков после запятой, а в вашем примере 0.


Название: Re: Перевод числа с плавающей запятой в строку
Отправлено: spirit от Июнь 09, 2009, 12:27
ээээ, ясно. тогда ручками.