【发布时间】:2014-05-16 19:33:38
【问题描述】:
我在运行 Windows 的笔记本电脑上安装了 PHP 5.5。 我正在访问 Smartsheet API,我应该得到一个 18 位(有时是 17 位)的列 id。但我得到了一个科学数字:
1.5441916385627E+15,不是1544191638562692
我在 Ubuntu 服务器环境中运行脚本,我看到 1544191638562692。同样,在 OS X Maverick 环境中运行,它与整数格式相同。
我一直在找这件事,好像是精确的。
如果我在 php 中设置,OS X Maverick 环境的精度为 14,如下所示:
<?php
ini_set('precision', 14);
echo (float)$col->id;
// 1.5441916385627E+15
?>
我也得到了科学数字。
谁能帮我出个主意?
【问题讨论】:
-
如果这是一个id,则不应将其视为数字,而应视为字符串值。
-
如果我不得不猜测,我会说您获得科学记数法答案的机器运行的是 32 位 PHP,而 Ubuntu 机器运行的是 64 位。如果您处理的 ID 号超过约 20 亿,则应将它们视为 CBroe 建议的字符串以实现兼容性。
标签: php precision scientific-notation smartsheet-api