无法将字符串转换为浮点数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”,我为什么不能让它飘? 我试过几种方法,都没有工作。我究竟做错了什么?

+0

预期结果是什么? – mkaatman

+0

正如你可以在outprint中看到的那样,$ temp是一个带有“2.19”的字符串。我应该能够将其转换为浮动 –

+1

您的问题不清楚我看到将字符串“2.19”转换为浮点数没有问题 'var_dump((float)“2.19”); var_dump(floatval(“2.19”));' – Robert

通过这个文档: 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()

documentation

如果字符串不包含任何字符'。','e'或'E',并且数值适合整数类型限制(由PHP_INT_MAX定义),则字符串将被评估为整数。在所有其他情况下,它将被评估为浮动。