【发布时间】:2016-02-09 09:53:21
【问题描述】:
我正在从包含长数字 ID 字符串的电子表格中读取数据。我试图通过确保即使列格式被错误地设置为数字也能正确读取数据来使我的系统万无一失。
因此,电子表格包含以科学计数法表示的数字32486509223273700000,即3.2486509223274E+19。在将其存储为字符串之前,我需要将其转换为原始值。 这就是问题所在。
我无法让 PHP 将科学记数法转换回原始数字。使用各种方法将数字转换回原始数字,它似乎总是有不同的数字而不是尾随的零。
$i = 3.2486509223274E+19;
echo $i; //32486509223274000384
echo number_format($i,0,'',''); //32486509223274000384
echo sprintf('%0.0f', $i); //32486509223274000384
请注意,我打算将最终结果存储为字符串。
【问题讨论】:
-
科学记数法已经四舍五入了。如果没有千里眼(PHP 尚未实现),就不可能从那里得到原始的
32486509223273700000。甚至 Javascript 也会给你一个不同的数字。 -
@deceze 是的,我刚刚意识到它是不同的。
标签: php math floating-point scientific-notation