在PHP中设置精度

时间:2014-05-16 19:33:38

标签: php precision scientific-notation smartsheet-api

我已经在我的笔记本电脑上安装了PHP 5.5,他们正在运行Windows。 我正在访问Smartsheet API,我应该得到一个列号为18位数字(有时是17位)。但我得到一个科学数字:

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
?>

我也得到了科学数字。

任何人都可以帮我一个想法吗?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

因此,如果你想整数整数,你会使用:

printf("%u", $number);

答案 2 :(得分:0)

有一种方法可以做到这一点,例如,将JSON转换为数组我必须指定JSON_BIGINT_AS_STRING:

$ColumnsArray = json_decode($data, true,515,JSON_BIGINT_AS_STRING);