crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QDomDocument::toString() - форматирование double/float
ltise
  опции профиля:
сообщение 3.9.2013, 21:19
Сообщение #1


Студент
*

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

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




Репутация:   0  


Всем привет!
может кто в курсе - необходимо чтобы при записи в текстовый файл (QDomDocument::toString()) числа double выводились с заданной точностью:

сейчас получается:
<node p_x="126.390969122906" p_y="17.000000000001" ..../>

надо:
<node p_x="126.39" p_y="17" ..../>


как прикрутить форматирование, если это возможно ?
или может надо по другому как-то писать текст ?

Заранее спасибо



Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 4.9.2013, 17:03
Сообщение #2


Активный участник
***

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

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




Репутация:   3  


//Вот так можно попробовать отформатировать (2 - число знаков после запятой).
QString::number(domDocument.toString().toDouble(),  'g',  2);


Сообщение отредактировал ilyabvt - 4.9.2013, 17:03
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ltise
  опции профиля:
сообщение 4.9.2013, 20:36
Сообщение #3


Студент
*

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

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




Репутация:   0  


Цитата(ilyabvt @ 4.9.2013, 18:03) *
//Вот так можно попробовать отформатировать (2 - число знаков после запятой).
QString::number(domDocument.toString().toDouble(),  'g',  2);


Вопрос том как задать правило для всего текста..вот такой вариант должен был-бы по идее работать, но не работает к сожалению:
    QTextStream s;
    s.setRealNumberPrecision(2);
    
    dom_document.save(s, 2);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 5.9.2013, 7:02
Сообщение #4


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


ltise, никак не задать. Форматируй строки и записывай в виде строк
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 5.9.2013, 17:19
Сообщение #5


Активный участник
***

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

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




Репутация:   3  


Вопрос том как задать правило для всего текста

Можно написать парсер обрабатывающий string, находящий все числа и обрезающий разряды после двух знаков после запятой (точки).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Yuriy
  опции профиля:
сообщение 13.10.2013, 13:25
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 8.10.2013
Пользователь №: 3949

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




Репутация:   0  


Цитата(ltise @ 3.9.2013, 22:19) *
Всем привет!
может кто в курсе - необходимо чтобы при записи в текстовый файл (QDomDocument::toString()) числа double выводились с заданной точностью:

сейчас получается:
<node p_x="126.390969122906" p_y="17.000000000001" ..../>

надо:
<node p_x="126.39" p_y="17" ..../>


как прикрутить форматирование, если это возможно ?
или может надо по другому как-то писать текст ?

Заранее спасибо

Вопрос стоит не корректно. XML - это текстовый документ. И, соответственно, нет "внутри него" никаких int, float и т.п. И никаких преобразований типов при записи в строку не происходит. Стоит ли значение атрибута "1.222" или "1A2Y" - документу все равно, как Вы ее туда поместили, так обратно и получите.
Итого: Вам нужно при формировании документа преобразовывать число в строку нужного формата и потом эту строку устанавливать в документ. Или, если Вы уже получаете готовый документ, то нужные поля, атрибуты и т.д. - прочесть, преобразовать, заново сохранить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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