форматирование double в строку |
Здравствуйте, гость ( Вход | Регистрация )
форматирование double в строку |
a_goodgirl |
5.8.2009, 18:13
Сообщение
#1
|
Студент Группа: Участник Сообщений: 35 Регистрация: 4.6.2009 Пользователь №: 801 Спасибо сказали: 0 раз(а) Репутация: 0 |
привет.
Нужно преобразовать число с плавающей точкой в строку, используя формат. Что-то вроде FormatFloat. Формат типа "0,00" или "### #0,00" - основная задача - число знаков после запятой, количество разрядов и разделители разрядов. Пыталась использовать маску QLineEdit таким образом:
но в text возвращается 12.3, а мне нужно 12345.67. Т.е. чтобы представить корректно число из примера, нужно что-то вроед маски "####0.00" - или я чего-то не понимаю.. |
|
|
SABROG |
5.8.2009, 18:45
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Может проще будет отказаться от маски в пользу QDoubleValidator?
|
|
|
a_goodgirl |
5.8.2009, 19:33
Сообщение
#3
|
Студент Группа: Участник Сообщений: 35 Регистрация: 4.6.2009 Пользователь №: 801 Спасибо сказали: 0 раз(а) Репутация: 0 |
спасибо.. Не поможет валидатор..
не по адресу, видимо, обратилась на форум qt. Просто думала, может у них есть. на самом деле нужен аналог фукнции FormatFloat (реализована на Паскале, Delphi, в C++ Builder ) преобразование числа в строку с помощью форматирования (аналогично Excel) Неохота изобретать велосипед. Пытаюсь найти исходники ф-ции, что ли.. Понятно, что форматирование сложное, не sprintf( buf, "%.2f", f); |
|
|
panter_dsd |
5.8.2009, 19:37
Сообщение
#4
|
Жаждущий знаний Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: 3 |
Читай в ассистенте про QString::arg или Qstring::number, все там есть.
Сообщение отредактировал panter_dsd - 5.8.2009, 19:38 |
|
|
a_goodgirl |
5.8.2009, 20:12
Сообщение
#5
|
Студент Группа: Участник Сообщений: 35 Регистрация: 4.6.2009 Пользователь №: 801 Спасибо сказали: 0 раз(а) Репутация: 0 |
в смысле
? Форматирование в FormatFloat такого рода: формат примеры ----------------------------------------------------- 0000.00 1=0001.00 99=0099.00 100.001=0100.00 12345=12345.00 ####.## 1=0001.0 99=0099.0 100.001=0100.001 12345=12345.0 разделитель разрядов # ##0,000 123160.2=123 160.200 как все слиплось сейчас еще раз в виде картинки: (еще нужны разделители разрядов, формат типа # ##0,000, результат 12345.2 = 12 345.200) =================================== Насколько я поняла, в QString("%1").arg можно дополнить заданным символом (например, '0') до заданной ширины но задача ставится - дополнить в зависимости от маски т.е. если 0 в шаблоне - дополнять, # - не дополнять
Причина редактирования: используй тэг code
|
|
|
Litkevich Yuriy |
5.8.2009, 20:36
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
А где-то на формуе была подобная тема. И средствами Qt, вроде, неполучилось реализовать.
|
|
|
panter_dsd |
5.8.2009, 20:46
Сообщение
#7
|
Жаждущий знаний Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: 3 |
Отнаследуйся и сделай как надо.
|
|
|
SABROG |
5.8.2009, 22:11
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Ты же сама ограничила свою маску:
Вот "тупой" QLineEdit и берет тупо первые 3 символа из текста. Расширь так:
Обрезать экспоненту тоже можно, но метод не безопасен, т.к. double может быть больше чем int. Округляем до тысячных (3 знака) по правилу математики
"123 123.123 123" |
|
|
Текстовая версия | Сейчас: 4.12.2024, 17:24 |