Чтение онлайн

на главную - закладки

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

Согласно строгому определению, числа в XSLT имеют форму

s
×
m
×2
x
, где
s
— знак числа,
m
— его мантисса, а
x
— экспонента. Эти числа имеют следующие значения:

□ знак (

s
) равен
+1
для положительных чисел и
– 1
для отрицательных;

□ мантисса (

m
) — это положительное целое число в интервале от
0
до
253– 1
включительно;

□ экспонента (

x
) — это целое число в интервале от
– 1075
до
970
включительно.

Таким образом, числа в XSLT находятся в интервале приблизительно от

– 10317
до
10317
.

Кроме этого выделяются пять особых значений.

□ Отрицательная бесконечность. Это значение представляет отрицательные числа, меньшие, чем

– 10317
; оно соответствует математическому значению -∞. Отрицательная бесконечность может быть результатом таких операций, как деление отрицательного числа на нуль или умножение двух очень больших (в абсолютном значении) чисел разного знака в случае, когда для записи их произведения не хватит 64 бит.

□ Положительная бесконечность. Это значение представляет очень большие положительные числа, превосходящие

10317
; оно соответствует математическому значению ∞. Положительная бесконечность может быть результатом таких операций, как деление положительного числа на нуль или умножение двух очень больших (в абсолютном значении) чисел одного знака в случае, когда для записи их произведения не хватит 64 бит.

□ Отрицательный нуль. Это значение соответствует значению предела

– 1/x
при
x
, стремящемся к бесконечности. Отрицательный нуль может быть результатом таких операций, как деление отрицательного числа на бесконечность или положительного числа на отрицательную бесконечность. Отрицательный нуль может также быть получен путем деления отрицательного числа на очень большое положительное число, или, наоборот, в случае, когда для записи частного не хватает 64-битной точности.

□ Положительный нуль (предел

1/x
при
x
, стремящемся к бесконечности). Результат таких операций, как вычитание числа из самого себя, деление положительного числа на положительную бесконечность или отрицательного — на отрицательную бесконечность. Положительный нуль может также быть частным деления двух чисел одного знака, если для записи результата не хватает 64-битной точности.

□ Особое значение

NaN
, "не-число" (англ. "not-a-number"). Результат преобразования нечислового строкового значения в числовой формат.

Примеры особых значений:

– 1 div 0
→ 
отрицательная бесконечность

1 div 0
→ 
положительная бесконечность

1 div (-1 div 0)
→ 
отрицательный нуль

– 1 div (1 div 0)
→ 
отрицательный нуль

1 div (1 div 0)
→ 
положительный нуль

– 1 div (-1 div 0)
→ 
положительный нуль

1-1
→ 
положительный
нуль

number('one')
NaN, не-число

number('NaN')
NaN, не-число

Все числовые значения, кроме

NaN
являются упорядоченными, иначе говоря, для них определены операции сравнения.

□ Отрицательная бесконечность является наименьшим численным значением. Две отрицательные бесконечности равны между собой.

□ Отрицательные конечные числа больше отрицательной бесконечности, но меньше отрицательного нуля.

□ Отрицательный и положительный нули считаются равными.

□ Положительные конечные числа больше положительного нуля, но меньше положительной бесконечности.

□ Положительная бесконечность является наибольшим числом. Две положительные бесконечности находятся в равенстве, все остальные числа всегда будут меньше.

Примеры

□ 

1 div (1 div 0) < 1 div 0
true

(положительный нуль меньше положительной бесконечности);

□ 

1 div 0 < 2 div 0
false

(положительный нуль равен другому положительному нулю);

□ 

– 2 div 0 > -1 div 0 > false -1 div 0 = -2 div 0
true

(отрицательные бесконечности равны между собой);

□ 

– 1 div 0 < -1
true

(отрицательная бесконечность меньше любого отрицательного числа);

□ 

– 1 < -2 div (1 div 0)
true

(любое отрицательное число меньше отрицательного нуля);

□ 

– 2 div (1 div 0) = 1-1
true

1 div (1 div 0) > -2 div (1 div 0)
false

(отрицательный нуль равен положительному нулю);

□ 

1 > 1 div (1 div 0)
true

(любое положительное число превосходит положительный нуль).

Нечисловые значения,

NaN
, являются неупорядоченными — это означает, что, сравнивая их с другими числами, нельзя установить — больше они, меньше или равны. Результат сравнений операторами "
<
", "
<=
", "
=
", "
>
", "
>=
" будет "ложью", если хотя бы одно из сравниваемых значений —
NaN
. Единственное, что можно с точностью сказать о
NaN
— это то, что они не равны никакому другому числу, включая, собственно, нечисловые значения. То есть, если хотя бы один из операндов —
NaN
, результатом сравнения с использованием оператора "
!=
" будет "истина". Это влечет за собой интересный способ проверки, является ли значение некоторой переменной нечисловым или нет: выражение
$x!=$x
(буквально значение переменной
x
не равно значению переменной
x
) обратится в "истину" в том и только том случае, если значением
$x
является
NaN
. В шаблонных правилах эта проверка может быть записана при помощи элемента
xsl:if
:

Поделиться:
Популярные книги

Эволюционер из трущоб. Том 9

Панарин Антон
9. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 9

Кодекс Охотника. Книга ХХХ

Винокуров Юрий
30. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга ХХХ

Вперед в прошлое 9

Ратманов Денис
9. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 9

Сотник

Ланцов Михаил Алексеевич
4. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Сотник

Хозяин Теней 4

Петров Максим Николаевич
4. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 4

Лихие. Депутат

Вязовский Алексей
4. Бригадир
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Лихие. Депутат

Черный Маг Императора 5

Герда Александр
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 5

Седьмой Рубеж V

Бор Жорж
5. 5000 лет темноты
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Седьмой Рубеж V

Соло. Книга 2

Маханенко Василий Михайлович
2. Соло
Фантастика:
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Соло. Книга 2

Господин следователь. Книга восьмая

Шалашов Евгений Васильевич
8. Господин следователь
Детективы:
исторические детективы
5.00
рейтинг книги
Господин следователь. Книга восьмая

Страж Кодекса. Книга II

Романов Илья Николаевич
2. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга II

Темный Лекарь 6

Токсик Саша
6. Темный Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Темный Лекарь 6

Хозяин Теней

Петров Максим Николаевич
1. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней

Оживший камень

Кас Маркус
1. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Оживший камень