belarusweb.net
© Петр Романовский Минск, 2016-2017.



belarusweb.net

Основы создания сайтов...

PHP+MySQL >>>

                          Учебник Задачник Справочник

2.4. Вещественные числа

Вещественные числа (по-другому числа с плавающей точкой) записываются в одном из форматов, представленном в примере 2.3. Числа, расположенные в третьей и четвертой строках, представляют собой записи вещественных чисел в экпоненциальной форме, где вместо 10 в указанной степени используется прописная или строчная буква E, после которой ставится необязательный знак плюс '+' или минус '-' и в конце записывается показатель степени числа 10.

<?php
$a=123.45; 		//Положительное вещественное число
$b=-123.45;  	//Отрицательное вещественное число
$c=-.45;  		//Тоже самое, что и -0.45, т.к. ноль разрешается опускать
$d=1.2345e2; 	//Тоже самое, что и 123.45
$e=1.2345E-3; 	//Тоже самое, что и 0.0012345
?> 

Пример 2.3. Запись вещественных чисел в различных форматах

Числа с плавающей точкой имеют ограниченную точность, что может иногда приводить к неожиданным результатам (см. пример 2.4). Это связано с тем, что мы в основном привыкли вести расчеты в десятичной системе счисления, а компьютер перед вычислениями преобразует все числа в двоичную систему. Но не все вещественные числа могут быть точно преобразованы из десятичной системы счисления в двоичную, что и приводит к некоторой потере точности. Поэтому не стоит сравнивать вещественные числа и доверять их точности до последнего знака. Если же необходима высокая точность представления вещественных чисел, следует использовать специальные математические функции PHP произвольной точности, которые позволяют задать требуемую точность результата.

<?php
$a=0.7; 
$b=0.1;
$c=floor(($a+$b)*10);   //Функция floor() округляет число вниз
echo $c; 				   //Выведет 7 вместо ожидаемых 8 

/* При переводе чисел в двоичную систему была потеряна точность
и поэтому округление вниз применялось не к числу 8, а какому-то 
другому, меньшему числу, но близкому к 8 */
?> 

Пример 2.4. Побочные эффекты сложения вещественных чисел

Операции с вещественными числами иногда могут приводить к специальному нечисловому результату, который в PHP представлен константой NAN (от англ. not a number). Обычно это может быть связано с выполнением недопустимых математических операций над числами или выходом за допустимый диапазон значений для данной математической функции. Любое сравнение значения NAN с другим значением, даже с самим собой, всегда вернет FALSE, поэтому для определения ее наличия необходимо использовать специальную функцию is_nan(), которая вернет TRUE, если значение NAN, и FALSE в противном случае (см. пример 2.5).

<?php
$a=sqrt(-10); 		//Пытаемся извлечь квадратный корень из 
						//отрицательного числа, используем функцию sqrt()
echo $a.'<br>'; 	//Выведет 'NAN' (не число)

echo is_nan($a); 	//Выведет '1', что соответствует 'true', т.к. 
						//оператор echo выводит текст и перед выводом 
						//преобразует все типы данных в строковый тип

$b=($a!=$a); 		//Можно использовать и сравнение на 'не равно', ведь 
						//если значение переменной является NaN, то сравнение
						//вернет true, т.к. только NaN не равно само себе!!!
						//Здесь мы присвоили результат сравнения переменной $b

echo $b.'<br>'; 	//Выведет '1', что соответствует 'true'
?> 

Пример 2.5. Константа NAN

Контрольные вопросы и задания

  1. Каков формат записи вещественных чисел в экспоненциальной форме?
  2. Что представляет собой константа NaN?

Словарь новых английских слов

boolean [bʊˈlɪən] – логический тип.
integer [ˈɪntɪdʒə] – целое число.
float [fləʊt] – плавать, число с плавающей точкой.
string [strɪŋ] – струна, строка.
array [əˈreɪ] – массив.
object [ˈɒbdʒɪkt] – объект, предмет.
resource [rɪˈsɔːs] – ресурс.
null [nʌl] – отсутствующий, нулевой.
true [truː] – истинный, верный.
false [fɔːls] – ложный, неверный.
number [ˈnʌmbə] – число, количество.
here [hɪə] – здесь, тут.
now [naʊ] – теперь, сейчас.
concatenation [kənkatəˈneɪʃn] – сцепление.
key [kiː] – ключ.
value [ˈvæljuː] – значение.
unset [ʌnˈsɛt] – сброс.

Комментарии (0)
Петр Романовский
1. Приветствуются комментарии, которые содержат дополнения к материалу текущей страницы, а также ваши ответы на вопросы других пользователей.
2. Если вам что-то непонятно - спрашивайте, не забывая написать, что именно и с какого места.
Показаны все комментарии
Чтобы оставить свой комментарий, авторизуйтесь, пожалуйста!    
     
belarusweb.net © Петр Романовский, Минск, 2016-2017.
Связаться с автором
Наверх