Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не правильное округление в xslt. 
V
    Опции темы
Хоббит
Дата 7.11.2008, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



В узле value лежит текст. В тексте значение 8.2. Есть несколько похожих узлов с разными значениями.

Допустим <xsl:value-of select="value[0]" />
Выводит 8.2

А вот <xsl:value-of select="math:min(value)" />
Выводит 8.199999999999

И <xsl:value-of select="round(math:min(value) * 10) div 10" />
Выводит 8.1999999999.

Что делать?
PM MAIL   Вверх
maxim1000
Дата 7.11.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 7
Всего: 110



проблема в том, что число 8.2 не получается представить в двоичной системе точно конечным количеством цифр (так же, как и 1/3 не получится представить конечной дробью в десятичной)
поэтому приходится округлять

думаю, стоит поискать функции для форматирования чисел в строки


--------------------
qqq
PM WWW   Вверх
Хоббит
Дата 8.11.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



Ну, как представляются вещественные числа в двоичной системе я знаю. Мне решение надо было.

В прочем уже нашел 2.
Выводить так
<xsl:variable name="min" select="math:min(value)" />
<xsl:value-of select="value[. = min]" />

Или лучше
<xsl:value-of select="math:lowest(value) />

А функций для форматирования вывода вещественных чисел в xslt встроенных нет.
PM MAIL   Вверх
maxim1000
Дата 8.11.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 7
Всего: 110



Цитата(Хоббит @  8.11.2008,  11:57 Найти цитируемый пост)
А функций для форматирования вывода вещественных чисел в xslt встроенных нет. 

ну почему же?
http://www.w3.org/TR/xslt#format-number
например, такой код:
Код

<xsl:value-of select="format-number(8.1999999,'#.##')"/>

выводит 8.2


--------------------
qqq
PM WWW   Вверх
Хоббит
Дата 8.11.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

Репутация: нет
Всего: 1



Виноват. Читал старую документацию в книжке.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.