PHP:依赖于语言环境的浮点数转换为字符串

时间:2013-07-11 07:34:51

标签: php string casting locale

我正坐在具有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?

1 个答案:

答案 0 :(得分:2)

  

为什么PHP在类型转换为字符串时使用语言环境?

这是他们的行为

  

如何禁用它?

你不能(据我所知)。

如果您安装了区域设置,则可以将区域设置设置为en_US

  

我想让这个函数返回字符串(5)" 1.234"在所有计算机上,无论任何区域设置。

您有两种选择:

1)number_format(1.234, 3, '.', '');

2)sprintf('%.3F', 1.234);

在这两种情况下,您都必须指定您想要的小数位数。

在第二种情况下,您可能无法指定它们并获得默认值6。

如果你不想要尾随的零,你可以trim

  

其次也不那么重要:为什么PHP会忽略我机器上的setlocale?

DevZer0所述,您可能没有安装区域设置。