为什么PHP的浮点数0(零)正在显示符号?

Gac*_*cek 5 php floating-point

在PHP中,让我们创建一个变量并将其值设置为0:

$x = 0;
echo $x;
Run Code Online (Sandbox Code Playgroud)

它会显示出来0.如果有人将乘以-1:

$x = -1 * $x;
echo $x;
Run Code Online (Sandbox Code Playgroud)

我们仍然看到0.但如果$x是浮动:

$x = 0;
$x = (float)$x;
$x = -1 * $x;
echo $x;
Run Code Online (Sandbox Code Playgroud)

我们得到输出:-0.

这是为什么?不管零的类型是什么,不应该始终显示为无符号?

Roc*_*cki 1

因为 PHP 通常使用IEEE 754 双精度格式来表示浮点数,其中包括:

1)符号(1位)

2)指数(11位)

3)分数(52位)

如果将 $x 乘以 -1,则符号位被设置。

整数使用两个补码,其中最高有效位 (MSB) 确定符号。如果乘以 0,则 MSB 为 0。

请参阅: https: //en.wikipedia.org/wiki/Signed_zero