3
我认为PHP中有一种简单的方法将18 5/16
这样的字符串转换为浮点数18.3125
。我找不到一个简单的功能来做到这一点。有一个,还是我需要写我自己的?将混合分数字符串转换为浮点数PHP
我认为PHP中有一种简单的方法将18 5/16
这样的字符串转换为浮点数18.3125
。我找不到一个简单的功能来做到这一点。有一个,还是我需要写我自己的?将混合分数字符串转换为浮点数PHP
我不认为这样的功能存在 - 至少不与PHP捆绑在一起。
编写一个执行此操作的函数,如果你的字符串总是具有相同的格式,不应该太难;例如,我会说,这样的事情应该做的伎俩:
$str = '18 5/16';
var_dump(calc($str));
function calc($str) {
$int = 0;
$float = 0;
$parts = explode(' ', $str);
if (count($parts) >= 1) {
$int = $parts[0];
}
if (count($parts) >= 2) {
$float_str = $parts[1];
list($top, $bottom) = explode('/', $float_str);
$float = $top/$bottom;
}
return $int + $float;
}
这将得到以下的输出:
float 18.3125
,你可能会得到一些更短的几个正则表达式;这样的事情应该做的伎俩,我想:
function calc($str) {
if (preg_match('#(\d+)\s+(\d+)/(\d+)#', $str, $m)) {
return $m[1] + $m[2]/$m[3];
}
return 0;
}
否则,不会在PHP捆绑在一起,而是已经存在的,也许这个类可以帮助:Eval Math。
声明:我没有测试它 - 所以不太确定它会在你的具体情况下工作。
我喜欢较短的版本,但更好地使用'^'和'$'括起正则表达式。 – aaz 2011-03-10 22:33:04