在 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
是什么导致了这种行为?
这个问题适用于 PHP < 8。根据文档,
自 PHP 8.0.0 起,小数点字符始终为
.
. 在 PHP 8.0.0 之前,小数点字符在脚本的语言环境中定义(类别 LC_NUMERIC)。请参阅 setlocale() 函数。