试图理解此代码行为
Trying to understand this code behaviour
今天我在做一个 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
.
因为 PHP 的 floor()
returns 一个浮点数(出于某种原因)和浮点数允许有负数 0。
这给出了一个正常的 0:
$x = 5.5;
$y = 0;
echo $z = floor($x * $y * -1 * -1);
float
和 double
都有一个正 0 和一个负 0。当您乘以 0 * -1 时,您将得到 IEEE 754 标准中指定的 -0。
注意:1/0 是正无穷大,1/-0 是负无穷大。
System.out.println(0f * -1);
打印
-0.0
Math.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
.
因为 PHP 的 floor()
returns 一个浮点数(出于某种原因)和浮点数允许有负数 0。
这给出了一个正常的 0:
$x = 5.5;
$y = 0;
echo $z = floor($x * $y * -1 * -1);
float
和 double
都有一个正 0 和一个负 0。当您乘以 0 * -1 时,您将得到 IEEE 754 标准中指定的 -0。
注意:1/0 是正无穷大,1/-0 是负无穷大。
System.out.println(0f * -1);
打印
-0.0
Math.floor 不是必需的。