Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:将字符串转换为浮点(仅当字符串表示浮点时)_Php_String_Type Conversion - Fatal编程技术网

PHP:将字符串转换为浮点(仅当字符串表示浮点时)

PHP:将字符串转换为浮点(仅当字符串表示浮点时),php,string,type-conversion,Php,String,Type Conversion,我有一个未知的字符串,可以像一个浮动。在这种情况下,我希望将其转换为float进行计算,否则将其保留为字符串 如何检测字符串是否表示浮点数 自动将后者转换为1.2,但这不是我想要的。您可以使用函数检查可能包含数字的变量。 例如: $a = "1.23"; if (is_numeric($a)) { $a = (float)$a; } $b = "1.2 to 1.3"; if (is_numeric($b)) { $b = (float)$b; } var_dump([

我有一个未知的字符串,可以像一个浮动。在这种情况下,我希望将其转换为float进行计算,否则将其保留为字符串

如何检测字符串是否表示浮点数

自动将后者转换为1.2,但这不是我想要的。

您可以使用函数检查可能包含数字的变量。 例如:

$a = "1.23";
if (is_numeric($a)) {
    $a = (float)$a;
}

$b = "1.2 to 1.3";
if (is_numeric($b)) {
    $b = (float)$b;
}

var_dump([
    'a' => $a,
    'b' => $b
]);
输出

数组大小=2'a'=>浮点1.23'b'=>字符串“1.2到1.3” 长度=10

可以使用函数检查可能包含数字的变量。 例如:

$a = "1.23";
if (is_numeric($a)) {
    $a = (float)$a;
}

$b = "1.2 to 1.3";
if (is_numeric($b)) {
    $b = (float)$b;
}

var_dump([
    'a' => $a,
    'b' => $b
]);
输出

数组大小=2'a'=>浮点1.23'b'=>字符串“1.2到1.3” 长度=10


也许您想使用:

float floatval mixed$var-获取字符串的浮点值

文档中的示例:

$string='122.34343The'; $float=floatval$string; echo$float;//122.34343
也许您想使用:

float floatval mixed$var-获取字符串的浮点值

文档中的示例:

$string='122.34343The'; $float=floatval$string; echo$float;//122.34343
您可以使用以下方法检查字符串是否为浮点:

$a = "1.23";
$isFloat = ($a == (string)(float)$a);

您可以使用以下方法检查字符串是否为浮点:

$a = "1.23";
$isFloat = ($a == (string)(float)$a);

因为它还没有被提及

if(preg_match('/^\d+\.\d+$/', $string)){
   $float = (float)$string;
}
我认为is_numeric是一个更好的选择,但这也适用

上面的内容只匹配浮动,所以它们必须有小数点。要使该选项成为可选选项,请改为使用/^\d+\.\d+?$/

^字符串开头 \d+一个或多个数字 \.点,字面意思 \d+一个或多个数字 $字符串结尾 对于第二个/^\d+\.\d+?$/除此之外,与上述内容相同:

...? 可选的捕获组,匹配此组0或1次。 现在应该很明显的是,十进制是可选的


干杯

因为它还没有被提及

if(preg_match('/^\d+\.\d+$/', $string)){
   $float = (float)$string;
}
我认为is_numeric是一个更好的选择,但这也适用

上面的内容只匹配浮动,所以它们必须有小数点。要使该选项成为可选选项,请改为使用/^\d+\.\d+?$/

^字符串开头 \d+一个或多个数字 \.点,字面意思 \d+一个或多个数字 $字符串结尾 对于第二个/^\d+\.\d+?$/除此之外,与上述内容相同:

...? 可选的捕获组,匹配此组0或1次。 现在应该很明显的是,十进制是可选的


干杯

一个怎么样?一个怎么样?我不明白这是怎么回事。floatval$string==$string似乎总是真的。通常,如果不是数字和浮点值,它只返回一个浮点0,但通过重新阅读您的帖子,我意识到$b=1.2到1.3也将返回1.2。我不知道这是如何工作的。floatval$string==$string似乎总是正确的。通常它只返回一个浮点0,如果它不是数字和浮点值,但通过重新阅读您的帖子,我意识到$b=1.2到1.3也将返回1.2,实际上与@Maxim的答案相同,只是很好地包装在一个函数中。实际上与@Maxim的答案相同,只是很好地包装在函数中。