我假设在 PHP 中有一种简单的方法可以将 18 5/16
之类的字符串转换为 float 18.3125
。我找不到一个简单的功能来做到这一点。有没有,还是我需要自己写?
最佳答案
我认为这样的函数不存在——至少没有与 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 .
免责声明:我尚未对其进行测试——因此不太确定它是否适用于您的特定情况。
关于php - 在 PHP 中将混合分数字符串转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5264143/