我正在尝试将带有数字的String转换为float。 我尝试了以下方法:
write_file($log . "temp=" . $temp . ".<br/>" , "public/files/log.txt" );
write_file($log . "temp type=" . gettype($temp) . "<br/>" , "public/files/log.txt" );
$flyt = floatval("2.19");
write_file($log . "2.19 float =" . $flyt . ".<br/>" , "public/files/log.txt" );
$flyt = floatval($temp);
write_file($log . "temp float =" . $flyt . ".<br/>" , "public/files/log.txt" );
这给了我以下结果:
temp float =0.
2.19 float =2.19.
temp type=string
temp=2.19.
当$ temp为“2.19”时,为什么我不能让它浮动? 我尝试了几种方法,都没有用。我做错了什么?
答案 0 :(得分:1)
浏览此文档: String Convertions
这应该这样做:
$flyt = (float) "2.19";
对于 floatval :
$string = '2.19';
$flyt = floatval($string);
echo $flyt;
也可以查看FloatVal Examples。
答案 1 :(得分:0)
您可以使用类型转换。
$StringVal = "10.12"; // $StringVal is String
$FloatVal = (float) $StringVal; // $FloatVal is Float
您可以使用此函数将字符串变量转换为float。
此函数使用最后一个逗号或点(如果有)创建一个干净的浮点数,忽略千位分隔符,货币或任何其他字母:
function tofloat($num) {
$dotPos = strrpos($num, '.');
$commaPos = strrpos($num, ',');
$sep = (($dotPos > $commaPos) && $dotPos) ? $dotPos :
((($commaPos > $dotPos) && $commaPos) ? $commaPos : false);
if (!$sep) {
return floatval(preg_replace("/[^0-9]/", "", $num));
}
return floatval(
preg_replace("/[^0-9]/", "", substr($num, 0, $sep)) . '.' .
preg_replace("/[^0-9]/", "", substr($num, $sep+1, strlen($num)))
);
}
参考:http://php.net/manual/en/function.floatval.php
使用 floatval()时的PTR:
如果字符串中不包含任何字符&#39;。&#39;,&#39; e&#39;或&#39; E&#39;并且数值适合整数类型限制(由PHP_INT_MAX定义),该字符串将被计算为整数。在所有其他情况下,它将被评估为浮动。