为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
幕布斯6054654 2022-06-17 17:00:35
我在带有 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有关如何解决此问题的任何建议?
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

基于intval()手册,它明确指出:

返回值

成功时 var 的整数值,失败时为 0。空数组返回 0,非空数组返回 1。

最大值取决于系统。32 位系统的最大有符号整数范围为 -2147483648 到 2147483647。例如,在这样的系统上,intval('1000000000000') 将返回 2147483647。64 位系统的最大有符号整数值为 9223372036854775807。

字符串很可能返回 0,尽管这取决于字符串最左边的字符。整数转换的通用规则适用。

笔记

注意:除非 var 参数是字符串,否则 base 参数无效。

所以基本上看起来你正在使用 32 位系统并且值从整数范围溢出。


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号