如何解决如何将字符串转换为带有“ tail”的浮点数?
| 我在将字符串转换为浮点数时遇到问题。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不是\ '34,7140 \'?我怎么能得到$ float = 34,7140?
解决方法
问题在于,浮点数应为英文格式,并以part1分隔小数部分而不是逗号。如果格式始终相同,并且使用单个逗号,则使用以下命令:
$float = (float)str_replace(\',\',\'.\',$value);
, PHP(和大多数其他计算机语言)中的小数点分隔符是点而不是逗号:
http://es2.php.net/manual/en/language.types.float.php
更新:floatval()一旦发现非数字字符,便停止解析该字符串。这是手册中的示例:
<?php
$var = \'122.34343The\';
$float_value_of_var = floatval($var);
echo $float_value_of_var; // 122.34343
?>
如果您需要提取非英语格式的数字,则必须编写自己的代码。这是一个建议:
function to_decimal($string,$decimal_separator=\',$thousand_separator=\'.\'){
$value = strtr($string,array(
$decimal_separator => \'.\',$thousand_separator => \'\',));
if( !is_numeric($value) ){
return NAN;
}
return floatval($value);
}
, 因为\“ 34,7140 \”是一个字符串,因为它包含逗号。
您可以使用$float = floatval(str_replace(\',\'\',$value[$id]));
删除逗号字符,或使用$float = floatval(str_replace(\',$value[$id]));
逗号替换为小数点,从而迫使PHP将数字解释为34.7140。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。