|
|
|
| к примеру есть число:
нужно узнать, ноль ли это.
При проверке
Этот способ не подходит т.к. это не ноль а 0.434343.
Каким образом сделать более точную проверку? | |
|
|
|
|
|
|
|
для: sl1p
(07.10.2011 в 05:05)
| | Числа с плавающей точкой не храняться в точном виде, они храняться в виде мат.модели. В результате вычислений накапливается ошибка вычислений, поэтому даже если у вас математически получается 0, он может выглядеть как 0.00000002432. Поэтому операторы сравнения == и эквивалентности === применительно к числам с плавающей точкой обычно не применяют. Как правило, для установки того факта, что число с плавающей точкой является нулем, его зажимают в интервале около нуля
<?php
$var = 0.434343;
if($var >= -0.000001 && $var <= 0.000001) echo "$var == 0.0<br />";
else echo "$var != 0.0<br />";
$var = 0.0;
if($var >= -0.000001 && $var <= 0.000001) echo "$var == 0.0<br />";
else echo "$var != 0.0<br />";
?>
|
PS Лучше такое справнение оформить в виде отдельной функции (к сожалению, в PHP операторы перегрузить нельзя). | |
|
|
|