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

на главную

Жанры

Технология 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
:

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

Лорд Системы 12

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

Младший научный сотрудник 2

Тамбовский Сергей
2. МНС
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Младший научный сотрудник 2

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Цеховик. Книга 2. Движение к цели

Ромов Дмитрий
2. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Цеховик. Книга 2. Движение к цели

Неестественный отбор.Трилогия

Грант Эдгар
Неестественный отбор
Детективы:
триллеры
6.40
рейтинг книги
Неестественный отбор.Трилогия

Попаданка в семье драконов

Свадьбина Любовь
Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.37
рейтинг книги
Попаданка в семье драконов

Звезда сомнительного счастья

Шах Ольга
Фантастика:
фэнтези
6.00
рейтинг книги
Звезда сомнительного счастья

Беглец

Кораблев Родион
15. Другая сторона
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Беглец

Я – Орк

Лисицин Евгений
1. Я — Орк
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я – Орк

Смерть может танцевать 2

Вальтер Макс
2. Безликий
Фантастика:
героическая фантастика
альтернативная история
6.14
рейтинг книги
Смерть может танцевать 2

Идеальный мир для Лекаря 18

Сапфир Олег
18. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 18

Жандарм

Семин Никита
1. Жандарм
Фантастика:
попаданцы
альтернативная история
аниме
4.11
рейтинг книги
Жандарм

Путь Шедара

Кораблев Родион
4. Другая сторона
Фантастика:
боевая фантастика
6.83
рейтинг книги
Путь Шедара

Гром над Империей. Часть 1

Машуков Тимур
5. Гром над миром
Фантастика:
фэнтези
5.20
рейтинг книги
Гром над Империей. Часть 1