php 是不是具有解析字符串中的指数的函数(例如:“9.5367431640625e-05”)还是必须通过正则表达式等手动完成?

Posted

技术标签:

【中文标题】php 是不是具有解析字符串中的指数的函数(例如:“9.5367431640625e-05”)还是必须通过正则表达式等手动完成?【英文标题】:does php have a function that parses exponents in strings (eg: "9.5367431640625e-05") or does it have to be done manually via regexp etc?php 是否具有解析字符串中的指数的函数(例如:“9.5367431640625e-05”)还是必须通过正则表达式等手动完成? 【发布时间】:2011-09-01 13:35:16 【问题描述】:

php 是否有一个函数可以转换字符串(数据类型将是字符串,因为它是从外部源解析的),例如:

string(..) "9.5367431640625e-05"

并对所述字符串进行指数计算并返回计算值?

或者我需要使用正则表达式等风格的方式来做类似的事情:

9.5367431640625e-05 -> 9.5367431640625^-5 = calculated value

如果 php 没有这样的功能,最好的想法是如何做到这一点?我只是要模式匹配类似的东西

/^([0-9\.\-]+)e([0-9\.\-]+)$/

有更好的想法吗?

谢谢!

【问题讨论】:

floatval? 【参考方案1】:

你可以做一个简单的演员:

$float = (float)$string;

但是除了检查0(这可能是一个有效值...)之外,没有办法进行错误检查。您也可以使用 floatval() 函数,它的作用相同。

但通常您不必这样做,因为 PHP 会根据需要进行转换。注意文档的那一章:http://de.php.net/manual/en/language.types.type-juggling.php

【讨论】:

两个答案都很棒!之所以选择这个,是因为提到了 floatval。衷心感谢您!【参考方案2】:

做一个演员:

$float  = (float) $string;

【讨论】:

以上是关于php 是不是具有解析字符串中的指数的函数(例如:“9.5367431640625e-05”)还是必须通过正则表达式等手动完成?的主要内容,如果未能解决你的问题,请参考以下文章

从字符串中以指数表示法解析整数

如何使用 PHP 从文本区域解析文本中的 \n 符号

如何在 PHP 中解析一串布尔逻辑

PHP:是不是有 isLetter() 函数或等效函数?

C++ hexfloat 编译时解析

解析PHP中的内存管理,PHP动态分配和释放内存