在PHP中我发现当一个小数打印到屏幕上时(或:当它被转换为字符串时),小数分隔符也将转换为逗号。 但那是为什么呢? 我没有找到任何关于此的文档,我不认为转换为字符串需要考虑国际化设置。
示例代码:
$var = 12.345;
var_dump($var); // Outputs: double(12.345)
var_dump((string)$var); // Outputs: string(6) "12,345"
var_dump(str_replace(',', '.', $var)); // Outputs: string(6) "12.345"
echo $var; // Outputs: 12,345
导致此行为的原因是什么?
答案 0 :(得分:2)
如果您阅读了手册,或通过Google查看,则会找到THIS。
小数点字符在脚本的语言环境中定义 (类别LC_NUMERIC)
现在,如果你想知道sys上设置的小数点是哪个:
print_r(localeconv());
返回:
Array
(
[decimal_point] => .
[...many other confs...]
)
如果您想设置它,请使用优秀的语言:setlocale(LC_NUMERIC, $language)
我使用fr_FR
获取逗号,en_US
使用逗号。
您应该参考the setlocale()
manual。
顺便说一下,我不知道如何直接设置decimal_point
返回的数组的localeconv()
键而不更改整个LC_NUMERIC配置文件,如果有人知道,请编辑:)