php - 在 PHP 中将混合分数字符串转换为 float

标签 php string math floating-point

我假设在 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/

相关文章:

python - 表达式 math.sqrt() 是必要的吗?

math - 使用三次贝塞尔曲线作为直线 : where do the control points have to be located to get equidistant spacing for t

ios - 使用贝塞尔曲线绘制螺旋

php - 如何下载上传的文件?

PHP 丢失 session 的页面之间

C++ 返回负字符串

string - 为什么流行的编程语言不使用其他字符来分隔字符串?

php - 哪种方法更好地将相关数据存储在表中

php - 我将如何解析它或将其转换为 JSON?

string - 在 Swift 中从字符串到 NSDate