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

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

Жанры

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

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

Газлайтер. Том 16

Володин Григорий Григорьевич
16. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 16

Жена на четверых

Кожина Ксения
Любовные романы:
любовно-фантастические романы
эро литература
5.60
рейтинг книги
Жена на четверых

Мир-о-творец

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

Граф Суворов 7

Шаман Иван
7. Граф Суворов
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Граф Суворов 7

Дорогой Солнца

Котов Сергей
1. Дорогой Солнца
Фантастика:
боевая фантастика
постапокалипсис
5.00
рейтинг книги
Дорогой Солнца

Шайтан Иван 2

Тен Эдуард
2. Шайтан Иван
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Шайтан Иван 2

Возвышение Меркурия. Книга 14

Кронос Александр
14. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 14

Девяностые приближаются

Иванов Дмитрий
3. Девяностые
Фантастика:
попаданцы
альтернативная история
7.33
рейтинг книги
Девяностые приближаются

Царь Федор. Трилогия

Злотников Роман Валерьевич
Царь Федор
Фантастика:
альтернативная история
8.68
рейтинг книги
Царь Федор. Трилогия

Газлайтер. Том 6

Володин Григорий
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 6

Дочь опальной герцогини

Лин Айлин
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Дочь опальной герцогини

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Кодекс Крови. Книга VIII

Борзых М.
8. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VIII

Небо для Беса

Рам Янка
3. Самбисты
Любовные романы:
современные любовные романы
5.25
рейтинг книги
Небо для Беса