Может быть кто объяснит - почему '-0'?

bit_immo

Guest
Может быть кто объяснит - почему '-0'?

Привет, All!
Может быть кто объяснит - почему при умножении _вещественных_ чисел на 0 - php возвращает - '-0'?
<?
$a=-1111.2;
$b=$a*0;
echo $b."\n";
?>
 

bit_immo

Guest
поправка - _вещественных отрицательных_.

-~{}~ 15.08.05 10:48:

Если это бага - я думаю ее стоит в фак вынести. Сам на нее чисто случайно наткнулся.
 

Demiurg

Guest
мда. что то не то в php с float
<?
$a=-1111.2;
$b=$a*0;
printf("%e\n",$b);
?>
только это надо не в фак а баг-репорт
 

Alexandre

PHPПенсионер
теоретически при умножении 0 * - xxx должно быть 0

но, в курсе высшей математики, что-то помниться есть понятие -0, т.е. бесконечно маленькое число по левой стороне числовой оси. Может решили его заложить в PHP
 

Demiurg

Guest
Alexandre
ты не путаешь с пределами справа и слева ? там +0 и -0 всего лишь обозначения.
 

tony2001

TeaM PHPClub
float(0) != int(0)
из-за того как хранятся числа в компьютере, точность чисел с плавающей точкой - условная.
и 3, на самом деле может быть 2.999999999999999999999999, а 0 - 0.000000000000000000000000000000000000000000000000000000001.

RTFM: [m]float[/m]
 

bit_immo

Guest
тоесть, вышло что число -1111.2 на 0 - у нас получилось предельно маленькое число меньше нуля?

Разве не будет 0 - если мы любое число умножим на 0?
 

Фанат

oncle terrible
Команда форума
bit_immo ты эту свою последнюю реплику написал до того, как прочёл последний ответ или после?
 

bit_immo

Guest
после. :) все понятно - нужно быть предельно аккуратным с числами с плавающей точкой... float(0) и int(0) - может не равняться, но не всегда.
 
Сверху