2012-11-06 47 views
0

我想写浮点数的数组文件如何让数字不以科学形式显示?

<?php 
$x=[0.000455,0.000123,0.00005690330203]; 
$fname='test.txt'; 
$str=''; 
foreach($x as $elem){ 
$str .= "$elem\n"; 
    } 
file_put_contents($fname,$str); 
?> 

但在test.txt的,我看到

0.000455 
0.00
5.690330203E-5 

我不想被显示的浮点数字科学/指数形式,我希望他们保持原来的形式,除此之外,还有大整数如12430120340 所以如果我使用浮点数的特殊格式,如0.00那么也许它不适合大整数,也许转换他们变成了stri恩斯可能是个好主意?但是如何?

+0

你是什么意思的原始形式?举个例子。 –

+1

在这种情况下,他/她的意思是:'0.00005690330203'而不是'5.690330203E-5' – nickhar

+0

是的,nickhar是对的 – user1769686

回答

1

可以使用number_format功能设置精度:

:如果你决定要你所有的号码有10位小数

$mynum = 24.2837162893; 
$mynum = number_format($mynum, 2); 
echo($mynum); 

// Outputs 24.28 

所以,你只想用$mynum = number_format($mynum, 10);

此外,请参阅sprintf()功能的其他格式选项。

[编辑]

在你的具体的例子,在这里你可以使用这个功能:

<?php 
    $x=[0.000455,0.000123,0.00005690330203]; 
    $fname='test.txt'; 
    $str=''; 
    foreach($x as $elem){ 
     $str .= number_format($elem, 5) . "\n"; 
    } 
    file_put_contents($fname,$str); 
?> 

如其他答案描述的,浮动的值并不精确。你必须决定在你的用例中什么精度对你很重要。

编号:http://php.net/manual/en/function.number-format.php

+0

我想将它们打印到文件中,而不是echo $ var – user1769686

+0

请参阅上面的我的编辑。 –

+0

有时10有点大,但有时候10有点小,它是可变的。 – user1769686

0

你应该注意,作为“原始形式”没有这样的事,当浮子字面已经比内部表示不同的事情。在编程的上下文中,浮点本质上是不精确的,并且很多浮点数没有可以用十进制表示的特定形式。这就是为什么你能做的最好的就是设置一些精度,如other answer所示。

这与PHP无关,但与编程有关。

如果您有存储为字符串,而不是作为花车同样的东西,说:

$x  = ['0.000455', '0.000123', '0.00005690330203']; 
$fname = 'test.txt'; 
$str = ''; 

foreach($x as $elem) { 
    $str .= "$elem\n"; 
} 

file_put_contents($fname, $str); 

,那么你应该在打印或将其写入文件中没有任何问题。

+0

所以如何将它们转换为字符串,有整数,浮点数在一个可变长度的数组中 – user1769686

+0

@ user1769686在另一个答案中显示的number_format()就是这样做的,将它转换为一个字符串。我的观点是,如果你需要一个“原始形式”,他们应该是字符串开始。如果您的原件是浮动图案,则没有原始(基数为10)的形式,您必须选择自己想要表示的内容。你已经失去了原来的形式,没有确切的办法让它恢复:你只能猜测。另一个答案中的“10”就是那种猜测。 – eis

相关问题