簡體   English   中英

如何將字符串轉換為帶有“tail”的浮點數?

[英]How to convert a string to float with “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?

問題是浮點數應該是英文格式,帶有. 分隔小數部分,而不是逗號。 如果格式始終與單個逗號相同,請使用以下命令:

$float = (float)str_replace(',', '.', $value);

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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM