Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP浮点输出格式_Php_Apache_Output_Command Line Interface_Number Formatting - Fatal编程技术网

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中遇到了一些奇怪的行为,在某个时候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
选项。当您将其更改为使用您想要的符号的国家/地区时,它应该起作用

解释来自:

当未指定任何值时(通过>忽略相应的参数或通过传递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)