html.okpython.net
HTML и CSS для начинающих

PHP :: Вещественные числа

Синтаксис вещественных чисел в PHP

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

PHP htmlCodes
<?php

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

?> 

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

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

PHP Результат htmlCodes
<?php

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

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

?> 

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

Константа NAN

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

Любое сравнение значения NAN с другим значением, даже с самим собой, всегда вернет FALSE, поэтому для определения ее наличия необходимо использовать специальную функцию is_nan(), которая вернет TRUE, если значение NAN, и FALSE в противном случае (см. пример №3).

PHP Результат htmlCodes
<?php

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

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

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

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

?> 

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

Быстрый переход к другим страницам