无法将字符串转换为浮点数php
问题描述:
我试图将一个字符串与一个数字转换为一个浮点数。 我试过如下:无法将字符串转换为浮点数php
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.
当$温度是“2.19”,我为什么不能让它飘? 我试过几种方法,都没有工作。我究竟做错了什么?
答
通过这个文档: String Convertions
这应该这样做:
$flyt = (float) "2.19";
对于floatval:
$string = '2.19';
$flyt = floatval($string);
echo $flyt;
看一看FloatVal Examples了。
答
您可以使用类型转换。
$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
PTR使用时floatval():
如果字符串不包含任何字符'。','e'或'E',并且数值适合整数类型限制(由PHP_INT_MAX定义),则字符串将被评估为整数。在所有其他情况下,它将被评估为浮动。
预期结果是什么? – mkaatman
正如你可以在outprint中看到的那样,$ temp是一个带有“2.19”的字符串。我应该能够将其转换为浮动 –
您的问题不清楚我看到将字符串“2.19”转换为浮点数没有问题 'var_dump((float)“2.19”); var_dump(floatval(“2.19”));' – Robert