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

问题描述 投票:9回答:1

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

php string casting locale
1个回答
5
投票

为什么类型转换将字符串浮动到字符串时PHP为什么使用语言环境?

这就是它的行为

如何禁用它?

据我所知,你不能。

如果已安装locale,则可以将语言环境设置为en_US

我希望此功能在所有计算机上都返回string(5)“ 1.234”,而不考虑任何语言环境设置。

您有两个选择:

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

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

在两种情况下,您都必须指定所需的十进制数字。

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

如果您不希望尾随零,可以trim它们。

次要但次要的重要性:为什么PHP会忽略我机器上的setlocale?

DevZer0所评论,您可能未安装语言环境。

© www.soinside.com 2019 - 2024. All rights reserved.