PHP是一种弱语言类型,这是它的优点和特点,但有时您必须相应地更改类型。

这个问题出现在此时,因为在许多情况下,您会发现转换类型的数据与期望值相差很大。

在这里,我以强迫转换为例。

看看下面的代码,你不能说你不能说正确的答案。
回声(int)123.99999999999999;
回声(int)-1.999999999999999;
回声(int)-1.9999999999999999;
回声(int)-0.99999999999999999;
回声(int)-10.999999999999999;
回声(int)-1000.9999999999999;
回声(int)- 9999999999;

看看我得到的结果。

首先,我想解释我environment.win7 x86系统

结果如下

一百二十四
- 1
- 2
- 1
- 10
- 1001
- 1410065407

官方声明是:

当从浮点数转换为整数时,舍入为零。

如果浮动超出整数范围内(一般为+ / - 2.15e + 9 = 2 ^ 31),结果是不确定的,因为没有浮给一个确切的整数结果有足够的精度。在这种情况下,没有警告,甚至没有注意到。

说了这么多,总结出一句话:精度不接近我的鸟事!

看看这个,你可能会认为我举的例子有点牵强,根本不可能使用这么高的精度。

下面让我们看看下面的例子。

回声(int)((0.1 + 0.7)* 10);

别猜,这里处决的结果是——7!

是的,你没看错。我没有犯错误。结果是7,而不是我们通常认为的8。

现在,你知道他妈的PHP是怎么回事!

PHP官员有这样的警告:

不要把未知的分数强制为整数,有时会导致不可预知的结果。

因此,在进行强制式转换时,一定要小心!

当然,上面的例子可以用这种方式处理。
x = $ =(0.1 + 0.7)* 10;
回声(int)$;