小数分隔符默认使用什么符号PHP,可以配置吗?
What sign for decimal separator uses PHP by default and can it be configured?
我正在使用 number_format
以不同格式显示小数(价格,根据区域配置等)。我更喜欢它而不是 money_format
。无论如何,number_format 用于显示文本数量,因此,例如,我将为美国显示 ,203.56
,为欧洲显示 1.090,00€
。当然,物品价格总和等内部计算,我用number_format
对价格、折扣等进行四舍五入,我用
number_format($price * quantity- $discounts ... , 2, ".", "");
我明白这是正确的,并且会完美地添加所有值,并在最终结果中限制为 2 个小数点。我将其存储在数据库中,稍后在导航器屏幕中显示每个案例(文本)的 number_format
版本。但我担心在我的服务器中,他们可能会更改配置,突然 PHP 会使用 ,
作为小数点分隔符,混合计算的数量?这是可能的还是保证在数字计算中始终使用 .
的科学记数法作为小数点并且不使用千位分隔符?我很担心,因为PHP没有打字,所以number_format
的"type"是字符串。我还必须转换为 (float)
吗?我做的测试没问题,但我担心会出问题。
您的担心是对的,这就是为什么您应该以原始 numeric 格式而不是格式化字符串的形式存储数字。应该对数值执行计算,而不是从逆向工程字符串表示中获得的值。
因此,将数字存储在 DECIMAL
中(或者更好的是,将以美分为单位的值存储在 INT
列中),然后在您的视图中格式化数字。
<?php echo '$'.number_format($price); ?>
我正在使用 number_format
以不同格式显示小数(价格,根据区域配置等)。我更喜欢它而不是 money_format
。无论如何,number_format 用于显示文本数量,因此,例如,我将为美国显示 ,203.56
,为欧洲显示 1.090,00€
。当然,物品价格总和等内部计算,我用number_format
对价格、折扣等进行四舍五入,我用
number_format($price * quantity- $discounts ... , 2, ".", "");
我明白这是正确的,并且会完美地添加所有值,并在最终结果中限制为 2 个小数点。我将其存储在数据库中,稍后在导航器屏幕中显示每个案例(文本)的 number_format
版本。但我担心在我的服务器中,他们可能会更改配置,突然 PHP 会使用 ,
作为小数点分隔符,混合计算的数量?这是可能的还是保证在数字计算中始终使用 .
的科学记数法作为小数点并且不使用千位分隔符?我很担心,因为PHP没有打字,所以number_format
的"type"是字符串。我还必须转换为 (float)
吗?我做的测试没问题,但我担心会出问题。
您的担心是对的,这就是为什么您应该以原始 numeric 格式而不是格式化字符串的形式存储数字。应该对数值执行计算,而不是从逆向工程字符串表示中获得的值。
因此,将数字存储在 DECIMAL
中(或者更好的是,将以美分为单位的值存储在 INT
列中),然后在您的视图中格式化数字。
<?php echo '$'.number_format($price); ?>