0

我在运行 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
?>

我也得到了科学数字。

有人可以帮我出个主意吗?

4

3 回答 3

1

正如评论中提到的,这听起来像是运行 32 位 PHP 的问题。Smartsheet 确实提供了一些示例 PHP 代码来帮助您开始使用 API。在这些示例中,文档建议您将 id 视为 32 位 PHP 中的字符串:

https://github.com/smartsheet-platform/samples/tree/master/php/1-HelloSmartsheet#dependencies

于 2014-05-22T23:59:40.067 回答
0

您可以使用 PHP 中的格式化字符串函数在所有机器上以相同的方式输出数字,有关文档,请参阅http://nl1.php.net/manual/en/function.sprintf.php

因此,如果您希望将整数作为一个整体,您可以使用:

printf("%u", $number);
于 2014-05-16T19:44:47.813 回答
0

一种可能的方法是,例如,将 JSON 转换为我必须指定 JSON_BIGINT_AS_STRING 的数组:

$ColumnsArray = json_decode($data, true,515,JSON_BIGINT_AS_STRING);
于 2017-11-05T14:29:13.763 回答