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));' –