将字符串提取并转换为float

时间:2017-06-13 21:47:27

标签: php floating-point

function extractNumber($str) {
  $re = '/((?:[0-9]+,)*[0-9]+(?:\.[0-9]+)?)/';
  preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);
  return isset($matches[1]) ? floatval(trim($matches[1][0])) : 0;
}

echo extractNumber('4,158.60'); // 4

https://eval.in/816428

将字符串转换为float的最可靠方法是什么?另外,我不想在没有小数的情况下返回浮点数,我该怎么做?

1 个答案:

答案 0 :(得分:0)

首先,我们需要获取当前的区域设置'千分隔符:

$locale_def = localeconv();
$thousands_separator = $locale_def["thousands_sep"];

但是,如果字符串与当前语言环境不兼容,并且我们有一个硬编码的千位分隔符:

$thousands_separator = ",";

然后我们需要替换它们:

$str = str_replace($thousands_separator, "", $str);

最后,我们可以使用floatval

$float = floatval($str);

(可选)如果字符串没有小数部分,我们可以将它用作整数:

$num = fmod($float,1) === 0 ? intval($float) : $float;