【问题标题】:Why does PHP transform 15+ digit long integer on output [duplicate]为什么 PHP 在输出上转换 15+ 位长整数 [重复]
【发布时间】:2013-03-04 11:03:25
【问题描述】:

为什么echo 100000000000000; 输出1.0E+14 而不是100000000000000

这种输出上的整数转换只发生在长度为 15 位或更长的整数上。

【问题讨论】:

  • 公平地说,另一个问题的标题措辞不是很好。
  • echo number_format(100000000000000,0,null,'');
  • @PHPNooB OP 提出的问题多于提供的答案,因此 rep 来自于提出问题,因此我相信他不会知道这一点,因为他的个人资料并未表明他是 PHP 专家。此外,正如金博指出的那样,标题确实措辞不当。在你指责 OP 嫖娼之前,请先做一些研究,比如点击个人资料。
  • @Jimbo 没关系。标记重复项的目的是重定向到答案并避免重复工作,而不是因为搜索不足而对 OP 唠叨。 (也就是说,它并不完全是重复的,因为这个问题是关于肯定可以表示为整数的数字。)
  • 是的,我的错,它非常相似但不完全相同;同意@HaralanDobrev,这是相同的问题和答案,但来自相反的方向。我很抱歉指责 OP 进行徽章嫖娼……这是不恰当的,我不应该这么说。

标签: php integer


【解决方案1】:

这个数字太大,无法放入 32 位整数,因此 PHP 将其存储在浮点数中。

请参阅php manual 中的整数溢出部分。

如果您需要非常大的整数,请查看GMP

【讨论】:

  • 适合 32 位的最大整数是多少?
  • 最大 int 32 值为 2,147,483,647 (2.1E+9)
  • 如果是这个原因,那么所有大于 PHP_INT_MAX 的数字都将以科学计数法表示。但事实并非如此。
  • 这是一个很好的观点。为您的回答 +1。
【解决方案2】:

PHP 无法处理这么大的整数,因此将它们视为浮点数。浮点数通常以科学记数法表示,以考虑超过一定数量的有效数字的不准确性。

【讨论】:

    【解决方案3】:

    任何大于 PHP 内置整数大小的数字都会被存储并表示为浮点数。

    要在输出中以特定方式格式化数字,请使用 printf 等函数。

    【讨论】:

      【解决方案4】:

      如果整数大于 PHP_INT_MAX,PHP 会将其转换为浮点数。对于 32 位系统,这是 2147483647。

      问题的答案与PHP中浮点数的字符串表示有关。

      如果scientific notation 中的指数大于13 或小于-4,PHP 将在打印浮点数时使用科学表示。

      例子:

      echo 0.0001; // 0.0001;
      
      echo 0.00001; // 1.0E-5
      
      // 14 digits
      echo 10000000000000; // 10000000000000
      
      // 15 digits
      echo 100000000000000; // 1.0E+14
      

      float vs. double precision

      【讨论】:

        【解决方案5】:

        数字太大,无法在您的平台上被 PHP 存储为整数, 所以它被存储为一个浮点数。 转换为字符串的规则对于浮点数和整数是不同的。

        尝试以下方法:

        var_dump(100000000000000);
        echo(is_int(100000000000000) ? 'an integer' : 'not an integer');
        

        输出:

        float(1.0E+14) 
        not an integer
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-06-21
          • 2019-06-21
          • 1970-01-01
          • 1970-01-01
          • 2013-01-04
          • 2020-12-28
          • 1970-01-01
          相关资源
          最近更新 更多