php - PHP 中的大量数字并不是它们看起来的那样
问题描述
我同意这个
php > var_dump(number_format(10000000000000000000000)); // 10^22
php shell code:1:
string(30) "10,000,000,000,000,000,000,000"
这里发生了什么事?
php > var_dump(number_format(100000000000000000000000)); // 10^23
php shell code:1:
string(30) "99,999,999,999,999,991,611,392"
有人可以向我解释这里到底发生了什么吗?
解决方案
这在文档中有很好的描述:
整数溢出
如果 PHP 遇到超出整数类型范围的数字,它将被解释为浮点数。此外,导致数字超出整数类型范围的操作将改为返回浮点数。
Example #3 64 位系统上的整数溢出
<?php $large_number = 9223372036854775807; var_dump($large_number); // int(9223372036854775807) $large_number = 9223372036854775808; var_dump($large_number); // float(9.2233720368548E+18) $million = 1000000; $large_number = 50000000000000 * $million; var_dump($large_number); // float(5.0E+19) ?>
浮点数无法准确表示许多值。请参阅浮点数学是否损坏?详情。
该PHP_INT_MAX
常量显示您的 PHP 版本支持的最大整数。
推荐阅读
- c# - 如何重定向到另一个 aspx?
- python - PEG 节点访问者
- apache-flink - 如何获取 Flink 中所有并行度的指标?
- android - 如果 AlertDialog 中的 else 不起作用 Android kotlin
- json - 传入参数删除 - 颤振
- android - Firebase实时数据库getvalue()未映射对象
- python - 简单的 ping 扫描程序可以运行但也有错误
- bash - 部署和 ConfigMap 有什么关系?
- reactjs - 如何以网格布局显示视频并在按下 React Native 时播放
- graphql - 如何验证或检测 graph-ql java 中的附加请求参数?