9

我坐在一台具有 en_US 语言环境和这段 PHP 代码的机器上

setlocale(LC_ALL,'de_DE.utf8');
var_dump((string)1.234);

返回

string(5) "1.234"

而在我同事的具有德语语言环境的机器上,它返回

string(5) "1,234"

为什么 PHP 在将浮点数转换为字符串时使用语言环境?我怎样才能禁用它?我想让这个函数在所有机器上返回 string(5) "1.234",不管任何语言环境设置。

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

4

1 回答 1

5

为什么 PHP 在将浮点数转换为字符串时使用语言环境?

这就是它的行为

我怎样才能禁用它?

你不能(据我所知)。

en_US如果您安装了语言环境,您可以将语言环境设置为。

我想让这个函数在所有机器上返回 string(5) "1.234",不管任何语言环境设置。

你有两个选择:

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

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

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

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

如果您不想要尾随零,则可以使用trim它们。

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

正如DevZer0评论的那样,您可能没有安装语言环境。

于 2015-01-30T12:22:47.827 回答