试图理解这种代码行为

时间:2015-07-30 14:45:51

标签: java php floor

今天我正在开发一个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

2 个答案:

答案 0 :(得分:3)

LoginParam lp = new LoginParam("key","pwd"); LoginResponseParam lrp = port.login(lp); float同时为正0和负0.当您多次使用0 * -1时,您将获得IEEE 754标准中指定的-0。

注意:1/0为正无穷大但1 / -0为负无穷大。

您可以看到http://ideone.com/tBd41l

double

打印

System.out.println(0f * -1);

不需要Math.floor。

答案 1 :(得分:1)

因为PHP的floor()返回一个浮点数(由于某种原因),并允许浮点数为负0。

这给出了正常的0:

$x = 5.5;
$y = 0;
echo $z = floor($x * $y * -1 * -1);