Как сделать число не показано в научной форме?

Я хочу написать массив чисел с плавающей запятой в файлы

<?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.000123 5.690330203E-5 

Я не хочу, чтобы число точек с плавающей точкой отображалось в научной / экспоненциальной форме, я надеюсь, что они сохраняют исходную форму, кроме того, есть также большие целые числа, такие как 12430120340, поэтому, если я использую специальный формат для чисел с плавающей запятой, например 0.000123293304, то, возможно, он не подходит для больших целых чисел, может быть, преобразовать их в строки может быть хорошей идеей? но как?

Related of "Как сделать число не показано в научной форме?"

Вы можете использовать функцию number_format для установки точности:

Пример :

 $mynum = 24.2837162893; $mynum = number_format($mynum, 2); echo($mynum); // Outputs 24.28 

Поэтому, если вы решите, что хотите, чтобы все ваши номера имели 10 десятичных знаков, вы просто используете $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); ?> 

Как описано в другом ответе, значения float по своей сути являются неточными. Вы должны решить, какая точность важна для вас в вашем случае использования.

Ссылка: http://php.net/manual/en/function.number-format.php

Вы должны заметить, что нет такой вещи, как «оригинальная форма», поскольку поток с плавающей точкой уже отличается от внутреннего представления. Поплавки по своей природе неточны в контексте программирования, а множество чисел с плавающей запятой не имеют конкретной формы, которая может быть представлена ​​десятичной. Вот почему лучшее, что вы можете сделать, это установить на них какую-то точность, как показано в другом ответе .

Это не связано с PHP, а с программированием в целом.

Если у вас есть те же вещи, что и строки, а не как плавающие, скажите:

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

то у вас не должно быть проблем при печати или записи их в файл.