将包含科学记数法中的数字的字符串转换为 PHP 中的双精度值

2022-08-30 22:49:43

我需要帮助将包含科学记数法中的数字的字符串转换为双精度值。

字符串示例:“1.8281e-009” “2.3562e-007” “0.911348”

我正在考虑将数字分解为左侧的数字和指数,而不仅仅是进行数学运算以生成数字;但是有没有更好/标准的方法来做到这一点?


答案 1

PHP是无类型动态类型化的,这意味着它必须解析值以确定其类型(最新版本的PHP具有类型声明)。

在你的例子中,你可以简单地执行一个数值运算来强制PHP将值视为数字(并且它理解科学记数法)。x.yE-z

例如,尝试

  foreach (array("1.8281e-009","2.3562e-007","0.911348") as $a)
  {
    echo "String $a: Number: " . ($a + 1) . "\n";
  }

只需加上1(你也可以减去零)就会使字符串变成数字,并有正确的小数点。

结果:

  String 1.8281e-009: Number: 1.0000000018281
  String 2.3562e-007: Number: 1.00000023562
  String 0.911348:    Number: 1.911348

您也可以使用(float)

  $real = (float) "3.141592e-007";

答案 2
$f = (float) "1.8281e-009";
var_dump($f); // float(1.8281E-9)

推荐