Сегодня я работал над проектом PHP и столкнулся с этим поведением кода
<?php
$x = 5.5;
$y = 0;
echo $z = floor($x * $y * -1);
?>
Это дало вывод -0
,
Может кто-нибудь пролить свет на то, почему это отголоски -0
, Но я ожидал 0
Только при добавлении этажа это происходит.
Я попробовал то же самое в Java.
class Sample {
public static void main(String[] args) {
float x =5.5f;
int y = 0;
System.out.println(Math.floor(x*y*-1));
}
}
Это также печатает -0.0
,
float
а также double
иметь как положительный 0, так и отрицательный 0. Когда вы умножаете 0 * -1, вы получите -0, как указано в стандарте IEEE 754.
Примечание: 1/0 — положительная бесконечность, но 1 / -0 — отрицательная бесконечность.
Ты это видишь http://ideone.com/tBd41l
System.out.println(0f * -1);
печать
-0.0
Math.floor не требуется.
Потому что PHP floor()
возвращает число с плавающей точкой (по какой-то причине), и допускается, что число с плавающей точкой имеет отрицательный 0.
Это дает нормальный 0:
$x = 5.5;
$y = 0;
echo $z = floor($x * $y * -1 * -1);