PHP查找浮点数的第一个科学上重要的“非零”数字

时间:2017-04-27 13:14:29

标签: php math floating-point

在这个问题中,我在科学语境中使用了重要一词

我想检索浮点数左边的前n位数。该功能应该包括:

  • $ number是浮点数。

  • $ n,即要检索的数字量。

以下是我希望函数返回的一些示例输入和输出:

  • 当$ number = 5678且$ n = 2时 - >>结果应该是:56
  • 当$ number = -69869且$ n = 4时 - >>结果应该是:6986
  • 当$ number = 0.00676且$ n = 2时 - >>结果应该是:67
  • 当$ number = -0.0000048且$ n = 3时,则>结果应为:480

我尝试了一些数学函数来实现这一点,并且相当远,但最后一个在

中出现了问题
$result = (int)(abs($number)/pow(10,(int)(log10(abs($number)))-$n));

作为答案返回479。这是因为我正在使用浮点数,我不知道如何解决这个问题。任何人吗?

1 个答案:

答案 0 :(得分:0)

你可以用字符串来做。这是一个选择吗?

$result = (int)str_pad(substr((int)str_replace('.','',preg_replace('/E‌​(.*)/','',abs($numbe‌​r))),0,$n),$n,'0',ST‌​R_PAD_RIGHT);