2
我發現PHP的字符串浮點轉換不是區域識別。如果我將setlocale()設置爲小數點爲逗號的語言環境,則floatval無法解析「3,14」。特別是因爲相反的轉換 - 浮動到字符串 - 感知區域並輸出逗號,我發現這很令人驚訝。PHP的floatval不是區域識別
<?php
setlocale(LC_ALL, "Norwegian", "no");
$localeconv = localeconv();
echo "decimal_point is `" . $localeconv['decimal_point'] . "'<br/>";
print "float to string: " . 3.14 . "<br/>"; // <-- Outputs "3,14" CORRECT
print "string to float: " . floatval("3,14"); // <-- Outputs "3" INCORRECT
?>
輸出我得到的是以下幾點:
decimal_point is `,'
float to string: 3,14
string to float: 3
這是PHP 5.3.6在Windows上。這是預期的行爲嗎? Unix上的PHP是否給出了相同的結果?
是的。是。在這裏閱讀評論:http://php.net/manual/en/function.floatval.php – NullUserException
究竟哪個意見? – richb
然後使用'floatval(str_replace(',','。',$ val));' –