Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QDomDocument::toString() - форматирование double/float
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Обработка XML
ltise
Всем привет!
может кто в курсе - необходимо чтобы при записи в текстовый файл (QDomDocument::toString()) числа double выводились с заданной точностью:

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

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


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

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



ilyabvt
//Вот так можно попробовать отформатировать (2 - число знаков после запятой).
QString::number(domDocument.toString().toDouble(),  'g',  2);
ltise
Цитата(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
ltise, никак не задать. Форматируй строки и записывай в виде строк
ilyabvt
Вопрос том как задать правило для всего текста

Можно написать парсер обрабатывающий string, находящий все числа и обрезающий разряды после двух знаков после запятой (точки).
Yuriy
Цитата(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" - документу все равно, как Вы ее туда поместили, так обратно и получите.
Итого: Вам нужно при формировании документа преобразовывать число в строку нужного формата и потом эту строку устанавливать в документ. Или, если Вы уже получаете готовый документ, то нужные поля, атрибуты и т.д. - прочесть, преобразовать, заново сохранить.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.