我可以阻止此操作以科学记数法返回答案吗?

时间:2011-03-17 19:48:24

标签: php math

我有一个相当简单的公式,虽然它涉及一个大数字,基本上是这样的:

$one = 1300391053;   
$two = 0.768;

// $millitime = 1.30039116114E+12    
$millitime = ($one+$two)*1000;

我知道这是技术上正确的答案,但我希望得到1300391053768。这样做的目的是以毫秒为单位获得时间。我可以将两者合并并删除小数,尽管感觉有点奇怪。

有没有办法让它“正确”存储?

[如旁注,似乎并非所有装置都处理相同的情况。我的本地PHP安装(MacOS上的v5.3)返回sci表示法,但我运行相同的代码writecodeonline.com并获得我期望/想要的东西。 ]

3 个答案:

答案 0 :(得分:5)

使用此选项以“标准”表示法打印,

$big_integer = 1202400000;  
$formatted_int = number_format($big_integer, 0, '.', ''); 
echo $formatted_int; //outputs 1202400000 as expected 

$sample_float = (float)100000 //float; 
$formatted_float = number_format($sample_float, 2, '.', ''); 
echo $formatted_float; //outputs 100000.00 as expected

我想这些例子会有所帮助

答案 1 :(得分:3)

尝试使用php的number_format()

这样:

$one = 1300391053;   
$two = 0.768;
$millitime = number_format(($one+$two)*1000);

答案 2 :(得分:1)

什么是“正确存储”? 如果您使用print_r($millitime);,您将获得1300391053768该值“正确”存储,唯一的问题是您希望如何格式化输出。您可以使用number_formatsprintf

echo sprintf('%.0f', $millitime) . PHP_EOL; // 1300391053768
echo sprintf('%e',   $millitime) . PHP_EOL; // 1.300391e+12

echo number_format($millitime, 0, '.', '') . PHP_EOL; // 1300391053768