我正坐在具有en_US语言环境和这段PHP代码
的计算机上setlocale(LC_ALL,'de_DE.utf8');
var_dump((string)1.234);
返回
string(5) "1.234"
而在我的同事的具有德语区域设置的机器上,它返回
string(5) "1,234"
为什么PHP在使用类型转换浮点到字符串时使用语言环境?我该如何禁用它?我希望在所有机器上都能使用此函数返回字符串(5)“1.234”,而不管任何语言环境设置。
其次也不那么重要:为什么PHP会忽略我机器上的setlocale?
答案 0 :(得分:2)
为什么PHP在类型转换为字符串时使用语言环境?
这是他们的行为
如何禁用它?
你不能(据我所知)。
如果您安装了区域设置,则可以将区域设置设置为en_US
。
我想让这个函数返回字符串(5)" 1.234"在所有计算机上,无论任何区域设置。
您有两种选择:
1)number_format(1.234, 3, '.', '');
2)sprintf('%.3F', 1.234);
在这两种情况下,您都必须指定您想要的小数位数。
在第二种情况下,您可能无法指定它们并获得默认值6。
如果你不想要尾随的零,你可以trim
。
其次也不那么重要:为什么PHP会忽略我机器上的setlocale?
如DevZer0所述,您可能没有安装区域设置。