如何在PHP中将数字转换为科学记数法?

时间:2018-01-29 18:08:05

标签: php

我正在使用Codeigniter进行基于Web的应用程序构建。

部分用户表单:

<div class="form-group" id="hasil_swab_tpc">
  <label for="swab_tpc" class="col-sm-3 control-label">Hasil TPC</label>
  <div class="col-sm-8">
    <input type="text" id="swab_tpc" name="swab_tpc" class="form-control" placeholder="Hasil Analisa TPC">
  </div>
</div>

我希望用户输入正常值,比如说 250 ,将值保存到数据库中。然后在视图页面中,我想以科学计数法 2.5 x 10 2 显示该值。

我的问题是:如何将数字转换为科学记数法? 出于某种原因,我需要显示用户输入的数字,从 250 2.5 x 10 2 25 2.5 x 10 1

1 个答案:

答案 0 :(得分:0)

嗯,这与CodeIgniter本身无关;实际上你要问的是 - 如何获得数量级?因为一旦拥有它,你可以echo

这样的东西
$value / pow(10,$order_of_magnitude) . ' x 10<sup>' . $order_of_magnitude . '</sup>'

(或使用插值)

现在,为什么不以简单的方式对其进行计算?像这样:

function getOrderOfMagnitude($value) {
    if($value == 0)
        return null; // you have to deal with this separately when displaying the value
    $absValue = abs($value); // let's deal with non-negative values only
    $orderOfMagnitude = 0;

    while($absValue >= 10) { // keep in mind that these "=" cases are limited to how the arithmetic works (see https://stackoverflow.com/q/588004/3995261)
        $absValue /= 10;
        $orderOfMagnitude++;
    }
    while($absValue < 0.1) {
        $absValue *= 10;
        $orderOfMagnitude--;
    }

    return $orderOfMagnitude;
}

这应该足以满足您的需求。