【问题标题】:why 1024 * 1024 * 1024 * 1024 * 1024 returns float?为什么 1024 * 1024 * 1024 * 1024 * 1024 返回浮点数?
【发布时间】:2014-09-20 14:40:42
【问题描述】:
<?php
$i = 1024 * 1024 * 1024 * 1024 * 1024;
var_dump($i);

输出 => float(1125899906842600)

为什么输出是浮点型?

【问题讨论】:

  • 因为 32 位 int 不能保存这样的值
  • 因为 PHP 没有长。 PHP 有 32 位或 64 位整数,具体取决于您的平台。它没有整数 和 长整数。
  • 在什么情况下将使用 64 位整数?
  • 在 64 位平台上,PHP 编译为 64 位。

标签: php floating-point numbers int


【解决方案1】:

因为 1125899906842600 > 2147483647。2147483647 是 32 位有符号整数的最大值。

【讨论】:

    【解决方案2】:

    如果 PHP 遇到溢出,它将强制转换为浮点数。

    见http://php.net/manual/en/language.types.integer.php

    【讨论】:

      猜你喜欢
      • 2014-08-31
      • 1970-01-01
      • 2013-12-28
      • 2021-03-24
      • 2015-02-16
      • 2020-05-06
      • 2012-08-15
      • 2012-09-18
      • 1970-01-01
      相关资源
      最近更新 更多