将包含科学记数法中的数字的字符串转换为 PHP 中的双精度值
2022-08-30 22:49:43
我需要帮助将包含科学记数法中的数字的字符串转换为双精度值。
字符串示例:“1.8281e-009” “2.3562e-007” “0.911348”
我正在考虑将数字分解为左侧的数字和指数,而不仅仅是进行数学运算以生成数字;但是有没有更好/标准的方法来做到这一点?
我需要帮助将包含科学记数法中的数字的字符串转换为双精度值。
字符串示例:“1.8281e-009” “2.3562e-007” “0.911348”
我正在考虑将数字分解为左侧的数字和指数,而不仅仅是进行数学运算以生成数字;但是有没有更好/标准的方法来做到这一点?
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";
$f = (float) "1.8281e-009";
var_dump($f); // float(1.8281E-9)