【问题标题】:Having an issue converting a float to an integer (PHP)将浮点数转换为整数时出现问题(PHP)
【发布时间】:2015-01-21 13:53:43
【问题描述】:

简短的故事,这是我的代码:

var_dump($recentGame->createDate);
var_dump((int) $recentGame->createDate);

正在产生以下输出:

float 1416772859827
int -566347853

为什么类型转换后的输出不是这个:

int 1416772859827

【问题讨论】:

  • 查看 32 位 PHP 的整数限制
  • 最大值取决于系统。 32 位系统的最大有符号整数范围为 -2147483648 到 2147483647。因此,例如在这样的系统上,intval('1000000000000') 将返回 2147483647。64 位系统的最大有符号整数值为 9223372036854775807。 @ 987654321@
  • 那么 createDate 代表什么整数?这不是标准的 unix 时间戳吗?
  • 这是一个纪元时间值,我需要从中创建一个 dateTime 对象。
  • 你有毫秒数:$seconds = $recentGame->createDate / 1000; echo date("d-m-Y", $seconds);

标签: php floating-point integer


【解决方案1】:

引用PHP docs:

整数的大小取决于平台,尽管通常值约为 20 亿的最大值(即 32 位有符号)。 64 位平台的最大值通常约为 9E18,Windows 除外,它始终为 32 位。 PHP 不支持无符号整数。自 PHP 4.4.0 和 PHP 5.0.5 起,可以使用常量 PHP_INT_SIZE 确定整数大小,使用常量 PHP_INT_MAX 确定最大值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多