crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> форматирование double в строку
a_goodgirl
  опции профиля:
сообщение 5.8.2009, 18:13
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 35
Регистрация: 4.6.2009
Пользователь №: 801

Спасибо сказали: 0 раз(а)




Репутация:   0  


привет.
Нужно преобразовать число с плавающей точкой в строку, используя формат. Что-то вроде FormatFloat.
Формат типа "0,00" или "### #0,00" - основная задача - число знаков после запятой, количество разрядов и разделители разрядов.
Пыталась использовать маску QLineEdit таким образом:
QLineEdit edt;
edt.setInputMask("0,00");
QString s;
s.setNum(12345.678, 'f', 2);
edt.setText(s);
text = edt.text();

но в text возвращается 12.3, а мне нужно 12345.67.
Т.е. чтобы представить корректно число из примера, нужно что-то вроед маски "####0.00" - или я чего-то не понимаю..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
SABROG
  опции профиля:
сообщение 5.8.2009, 22:11
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Ты же сама ограничила свою маску:

edt.setInputMask("0,00");


Вот "тупой" QLineEdit и берет тупо первые 3 символа из текста. Расширь так:

edt.setInputMask("0000000,00000000");


Обрезать экспоненту тоже можно, но метод не безопасен, т.к. double может быть больше чем int.

Округляем до тысячных (3 знака) по правилу математики

    double da = 123.0;
    double db = 123.123;
    double dc = 123.0001;
    da = int(da*1000+0.005)/1000.;
    db = int(db*1000+0.005)/1000.;
    dc = int(dc*1000+0.005)/1000.;
    qDebug() << QString("%1 %2 %3").arg(da).arg(db).arg(dc);


"123 123.123 123"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.12.2024, 1:54