В порядке прикола или тест на внимательность Код (Text): $ php -a Interactive mode enabled php > $x = 0.0; php > $y = -$x; php > var_export($x); 0.0 php > var_export($y); -0.0 php > var_export($x === $y); true как так?! https://reqbin.com/gws2gito
Очевидно что несмотря на [ строгое ] равенство +0.0 и -0.0 есть кейсы, когда разница есть. И это внезапно™ может выйти боком в вашем скрипте. Есть разница во внутреннем (бинарном) представлении +0.0 и -0.0: Код (Text): php > echo bin2hex(pack("f", 0.0)); 00000000 php > echo bin2hex(pack("f", +0.0)); 00000000 php > echo bin2hex(pack("f", -0.0)); 00000080 php > var_dump(unpack("f", "\x00\x00\x00\x00")[1]); float(0) php > var_dump(unpack("f", "\x00\x00\x00\x80")[1]); float(-0)
На всякий случай: это не фишка PHP, это фишка стандарта представления вещественных чисел IEEE 754 Python, JS, Java: вещественные 0 и -0 везде "равны", но текстовое представление -0.0 сохраняет знак "-".