PHP浮点输出格式
我在php中遇到了一些奇怪的行为,在某个时候php开始用逗号而不是点输出浮点值PHP浮点输出格式,php,apache,output,command-line-interface,number-formatting,Php,Apache,Output,Command Line Interface,Number Formatting,我在php中遇到了一些奇怪的行为,在某个时候php开始用逗号而不是点输出浮点值 <?php echo 12.3; //outputs "12,3" to both browser and CLI 您可以使用number\u格式始终保持其清洁 number_format(12.20, 2, '.') : string 这是因为本地化。由于PHP5.3.0,在PHP.ini中有一个intl.default\u locale选项。当您将其更改为使用您想要的符号的国家/地区时,它应该起作用 解
<?php
echo 12.3;
//outputs "12,3" to both browser and CLI
您可以使用number\u格式
始终保持其清洁
number_format(12.20, 2, '.') : string
这是因为本地化。由于PHP5.3.0,在PHP.ini
中有一个intl.default\u locale
选项。当您将其更改为使用您想要的符号的国家/地区时,它应该起作用
解释来自:
当未指定任何值时(通过>忽略相应的参数或通过传递NULL),将在intl函数中使用的区域设置。这些是ICU区域设置,而不是>系统区域设置。内置ICU区域设置及其数据可在»>上查看
默认值为空,这将强制使用ICU的默认区域设置。设置后,>ini设置无法重置为此默认值。不建议依赖此>默认值,因为其有效值取决于服务器的环境
和的示例
正如您在数字表下所看到的:
德国:
数字模式:1.234,56
美国:
数字模式:#,##0.####1234.56
编辑:
…因为其有效价值取决于服务器的环境
这意味着您必须更改服务器环境上的本地设置。它仅在未设置本地服务器时使用php.ini的设置值
对于Linux:
如果要更改或设置系统本地,请使用updatelocale
程序。LANG
变量允许您为整个系统设置语言环境
以下命令将LANG
设置为en_US.ISO8859-1
,并删除语言的定义
$ sudo update-locale LANG=LANG=en_US.ISO8859-1 LANGUAGE
OR
$ sudo localectl set-locale LANG=en_US.ISO8859-1
您可以在以下文件中找到全局语言环境设置:
/etc/default/locale
–在Ubuntu/Debian上
/etc/locale.conf
–在CentOS/RHEL上
echo number_格式(12.3,2',',',',',',',',',')
@Gulshan知道这一点,谢谢,但我需要找到原因并修复错误的输出。您是否按原样运行此脚本并看到此问题?请查看@jaywa yes,在CLI示例中,其命令php-r“echo 1.23”;我知道,谢谢,但是我需要找到原因并修复错误的输出。intl.default\u区域设置为“Null”,尝试了“en\u US”,您是否编辑了正确的.ini文件?你能把你的php.ini值打印到一个php文件并仔细检查吗?是的,我已经检查了phpinfo(),intl.default_locale的本地值和主值都等于“en_US”,你在使用哪个操作系统?Ubuntu(mint 19.2)