Php 如何将字符串转换为带“float”的float;尾巴;?

Php 如何将字符串转换为带“float”的float;尾巴;?,php,string,floating-point,integer,decimal,Php,String,Floating Point,Integer,Decimal,我在将字符串转换为浮点时遇到问题 print gettype($value[$id]); //returns string var_dump($value[$id]);//returns string '34,7140' (length=7) $float = floatval($value[$id]); print gettype($float);//returns double var_dump($float);//returns float 34 echo $float;//r


我在将字符串转换为浮点时遇到问题

print gettype($value[$id]); //returns string

var_dump($value[$id]);//returns string '34,7140' (length=7)

$float = floatval($value[$id]); 

print gettype($float);//returns double

var_dump($float);//returns float 34

echo $float;//returns 34
我不明白为什么是“34”?为什么$float不是“347140”
如何获取$float=347140?

因为“347140”是一个字符串,因为它包含逗号字符


您可以使用
$float=floatval(str_replace(',','','$value[$id])
删除逗号字符,或
$float=floatval(str_replace(“,”,“.”,$value[$id])
将逗号替换为小数点,从而迫使PHP将数字解释为34.7140。

PHP(以及大多数其他计算机语言)中的小数分隔符是点,而不是逗号:

更新:一旦找到非数字字符,就停止分析字符串。以下是手册中的示例:

<?php
$var = '122.34343The';
$float_value_of_var = floatval($var);
echo $float_value_of_var; // 122.34343
?>

问题在于,浮点应该是英文格式,小数部分之间用
分隔,而不是逗号。如果使用单个逗号时格式始终相同,请使用以下命令:

$float = (float)str_replace(',', '.', $value);

这不会把千位分隔符变成小数点吗(即34.714)。“你应该把逗号全部去掉,不是吗?”本,我觉得那不像是千分之一的分隔符。
$float = (float)str_replace(',', '.', $value);