将混合分数字符串转换为在PHP中浮动

TRi*_*RiG 4 php string math floating-point

我认为PHP中有一种简单的方法可以将类似string的字符串18 5/16转换为float 18.3125。我找不到一个简单的函数来做到这一点。有一个,还是我需要自己写?

Pas*_*TIN 6

我认为这种功能不存在-至少没有与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;
}
Run Code Online (Sandbox Code Playgroud)

这将为您提供以下输出:

float 18.3125
Run Code Online (Sandbox Code Playgroud)


使用一些正则表达式可能会使您的工作更简短; 我想这样的事情应该可以解决问题,我想:

function calc($str) {
    if (preg_match('#(\d+)\s+(\d+)/(\d+)#', $str, $m)) {
        return $m[1] + $m[2] / $m[3];
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)



另外,不是捆绑在PHP中,而是已经存在的此类,也许该类可以帮助您:Eval Math

免责声明:我尚未测试过,因此无法确定它是否可以在您的特定情况下使用。