![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
a_goodgirl |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 35 Регистрация: 4.6.2009 Пользователь №: 801 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
привет.
Нужно преобразовать число с плавающей точкой в строку, используя формат. Что-то вроде FormatFloat. Формат типа "0,00" или "### #0,00" - основная задача - число знаков после запятой, количество разрядов и разделители разрядов. Пыталась использовать маску QLineEdit таким образом:
но в text возвращается 12.3, а мне нужно 12345.67. Т.е. чтобы представить корректно число из примера, нужно что-то вроед маски "####0.00" - или я чего-то не понимаю.. |
|
|
SABROG |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Может проще будет отказаться от маски в пользу QDoubleValidator?
|
|
|
a_goodgirl |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 35 Регистрация: 4.6.2009 Пользователь №: 801 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
спасибо.. Не поможет валидатор..
не по адресу, видимо, обратилась на форум qt. Просто думала, может у них есть. на самом деле нужен аналог фукнции FormatFloat (реализована на Паскале, Delphi, в C++ Builder ) преобразование числа в строку с помощью форматирования (аналогично Excel) Неохота изобретать велосипед. Пытаюсь найти исходники ф-ции, что ли.. Понятно, что форматирование сложное, не sprintf( buf, "%.2f", f); |
|
|
panter_dsd |
![]()
Сообщение
#4
|
![]() Жаждущий знаний ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: ![]() ![]() ![]() |
Читай в ассистенте про QString::arg или Qstring::number, все там есть.
Сообщение отредактировал panter_dsd - 5.8.2009, 19:38 |
|
|
a_goodgirl |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 35 Регистрация: 4.6.2009 Пользователь №: 801 Спасибо сказали: 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 |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
А где-то на формуе была подобная тема. И средствами Qt, вроде, неполучилось реализовать.
|
|
|
panter_dsd |
![]()
Сообщение
#7
|
![]() Жаждущий знаний ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 1.1.2009 Из: Санкт-Петербург Пользователь №: 474 Спасибо сказали: 32 раз(а) Репутация: ![]() ![]() ![]() |
Отнаследуйся и сделай как надо.
![]() |
|
|
SABROG |
![]()
Сообщение
#8
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Ты же сама ограничила свою маску:
Вот "тупой" QLineEdit и берет тупо первые 3 символа из текста. Расширь так:
Обрезать экспоненту тоже можно, но метод не безопасен, т.к. double может быть больше чем int. Округляем до тысячных (3 знака) по правилу математики
"123 123.123 123" |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 29.4.2025, 10:24 |