双数的 intval 和(int)的完全错误的结果

我在带有 php 7 和 7.1 的 Windows 10 以及带有 PHP 7.0.33 的 raspbian 上都遇到了这个问题当我尝试将一个大的双精度(毫秒时间戳)转换为 int 时,我得到了一个完全错误的结果。例子:


$a = 1512298800000.0;

echo intval($a);

输出为:470311808


有关如何解决此问题的任何建议?我在带有 php 7 和 7.1 的 Windows 10 以及带有 PHP 7.0.33 的 raspbian 上都遇到了这个问题当我尝试将一个大的双精度(毫秒时间戳)转换为 int 时,我得到了一个完全错误的结果。例子:


$a = 1512298800000.0;

echo intval($a);

输出为:470311808


有关如何解决此问题的任何建议?


幕布斯6054654
浏览 134回答 1
1回答

慕尼黑8549860

基于intval()手册,它明确指出:返回值成功时 var 的整数值,失败时为 0。空数组返回 0,非空数组返回 1。最大值取决于系统。32 位系统的最大有符号整数范围为 -2147483648 到 2147483647。例如,在这样的系统上,intval('1000000000000') 将返回 2147483647。64 位系统的最大有符号整数值为 9223372036854775807。字符串很可能返回 0,尽管这取决于字符串最左边的字符。整数转换的通用规则适用。和笔记注意:除非 var 参数是字符串,否则 base 参数无效。所以基本上看起来你正在使用 32 位系统并且值从整数范围溢出。
打开App,查看更多内容
随时随地看视频慕课网APP