没有尾随零的 PHP 数量格式

Posted

技术标签:

【中文标题】没有尾随零的 PHP 数量格式【英文标题】:PHP quantity formatting without trailing zero 【发布时间】:2014-05-30 03:41:40 【问题描述】:

我在 yii 有一个项目。但问题可能更多是针对 php 而不是 yii 特定的。

我有列数量,用户可以在其中输入小数或整数。问题是我的客户不喜欢看到尾随零。例如:

项目 |数量 ------------------ 苹果 | 10 芒果 | 1.000 糖 | 10,5 面粉 | 10.002,55

目前,我有两个选择,

    如果使用 number_format,结果将是
项目 |数量 ------------------ 苹果 | 10,00 芒果 | 1.000,00 糖 | 10,50 面粉 | 10.002,55

这是我的客户不喜欢的。

    如果 + 0,则结​​果为
项目 |数量 ------------------ 苹果 | 10 芒果 | 1000 糖 | 10,5 面粉 | 10002,55

很难看到千数。

如何在 PHP 上获取第一个表?

提前感谢您的帮助。

【问题讨论】:

检查逗号是否存在,如果存在,右修剪零和逗号(分两步)。 【参考方案1】:

你可以用正则表达式来做到这一点:

$values = array(10, 1000, 10.5, 10002.55);
foreach ($values as $val)

    $numberA = Yii::app()->numberFormatter->format('#,##0.00', $val);
    $numberB = preg_replace('/,00|(,[1-9])0/', '\\1', $numberA);
    printf('%s => %s<br />', $numberA, $numberB);

【讨论】:

【参考方案2】:

number_format 允许您指定小数位数,然后查看最后 2 位是否为带分隔符的零。

如果它们存在,则删除它们。

试试

$num = 10002.00;
$var = number_format($num, 2, ',', '.');

if (substr($var, -3) == ",00")
    $var = substr($var, 0, -3);

echo $var;

【讨论】:

以上是关于没有尾随零的 PHP 数量格式的主要内容,如果未能解决你的问题,请参考以下文章

显示小数而没有尾随零的最佳方法

csharp 编写一个程序,计算给定数字的阶乘中的尾随零的数量。

格式化包含带前导零的小数点的数字

返回没有尾随零的双精度类型

格式化double,printf中至少有一个小数

PHP date():没有前导零的分钟