number_format()无法转换科学记数法

时间:2016-07-29 22:07:57

标签: php syntax logic

我有一些浮点值通过一个以科学记数法输出的数组循环。

我需要将科学记数法转换为常规的平面浮动长记法值。

我尝试过number_format(),但是在我循环的最后一个循环之前它仍然以科学记数输出?

<?php
$parray = array(array('BTC-EXP','1',0.000097,1),array('BTC-VOX',7,number_format(0.000075,8),7));
for ($x = 0; $x <= 1; $x++) {
        var_dump($parray);
        foreach($parray as $pairp){
                echo "\nDebug info! Limit\n";
                echo $pairp[2];
                echo "\n";
                print_r(number_format($pairp[2],8));

        }
}

?>

输出:

Debug info! midpoint
array(2) {
  [0]=>
  array(4) {
    [0]=>
    string(7) "BTC-EXP"
    [1]=>
    string(1) "1"
    [2]=>
    float(9.7E-5)
    [3]=>
    int(1)
  }
  [1]=>
  array(4) {
    [0]=>
    string(7) "BTC-VOX"
    [1]=>
    int(7)
    [2]=>
    string(10) "0.00007500"
    [3]=>
    int(7)
  }
}

Debug info! Limit
9.7E-5
0.00009700
Debug info! Limit
0.00007500
0.00007500
Debug info! midpoint
array(2) {
  [0]=>
  array(4) {
    [0]=>
    string(7) "BTC-EXP"
    [1]=>
    string(1) "1"
    [2]=>
    float(9.7E-5)
    [3]=>
    int(1)
  }
  [1]=>
  array(4) {
    [0]=>
    string(7) "BTC-VOX"
    [1]=>
    int(7)
    [2]=>
    string(10) "0.00007500"
    [3]=>
    int(7)
  }
}

Debug info! Limit
9.7E-5
0.00009700
Debug info! Limit
0.00007500
0.00007500

如何在整个周期内将浮点值转换为长符号(拒绝短符号)?

1 个答案:

答案 0 :(得分:0)

在$ parray中,您将一个数字存储为浮点数(0.000097),而另一个数字存储number_format(0.000075,8)的结果,这是一个字符串。

当你打电话时,这并不奇怪 在0.000097上echo $pairp[2];,您看到9.7E-5,但是当您为number_format(0.000075,8)回显它时,您会看到一个字符串表示形式(0.00007500)。

让我们为print_r(number_format($pairp[2],8));做同样的事情。当它被调用float(0.000097)时,它将其格式化为字符串,你会看到0.00009700。当它被称为“0.00007500”时,该字符串将转换为浮点0.000075,然后将其转换回字符串“0.00007500”。