2017-06-19 59 views
0

我試圖將一個字符串與一個數字轉換爲一個浮點數。 我試過如下:無法將字符串轉換爲浮點數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

回答

1

通過這個文檔: String Convertions

這應該這樣做:

$flyt = (float) "2.19"; 

對於floatval

$string = '2.19'; 
$flyt = floatval($string); 
echo $flyt; 

看一看FloatVal Examples了。

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

PTR使用時floatval()

documentation

如果字符串不包含任何字符'。','e'或'E',並且數值適合整數類型限制(由PHP_INT_MAX定義),則字符串將被評估爲整數。在所有其他情況下,它將被評估爲浮動。

相關問題