【问题标题】:Formatting an integer with irregular separators使用不规则分隔符格式化整数
【发布时间】:2012-06-02 11:00:49
【问题描述】:

使用以下 php 代码,我可以从 Mysql 数据库中获取借记列的总数:

PHP 代码

$total_debit = mysql_query("SELECT SUM(debit) FROM supplier_jv");
$re_t = mysql_fetch_array($total_debit);
$t_d =  $re_t['SUM(debit)'];

假设.. 金额为 590185。 所以我想显示这个数量: 5,90,185 (应该是一个昏迷 (,) 先是 3 个整数,然后是 2 个整数)

我如何用 php 做到这一点?

【问题讨论】:

  • 为什么要这样显示? (与常规的千位分隔符相反。)
  • 请停止使用mysql_*函数,它们已被弃用,请改用MySQLiPDO
  • 你试过sprintf()吗?
  • 如果 123456 变成 1,23,456 那么 123456789 会变成什么? 12,34,56,789?

标签: php number-formatting


【解决方案1】:

检查number_format 函数。

【讨论】:

  • 更正:您需要为不规则分隔的数字创建自己的函数。
【解决方案2】:
function myFormat($n) {
  if ($n < 0) return '-'.myFormat(-$n);

  $s = (string) $n;
  if (strlen($s) > 3) {
    $parts = array();
    $parts[] = substr($s, -3);
    if (strlen($s) > 5) {
      $parts[] = substr($s, -5, 2);
      $parts[] = substr($s, 0, strlen($s) - 5);
    }else{
      $parts[] = substr($s, 0, strlen($s) - 3);
    }
    return implode(',', array_reverse($parts));
  } else {
    return $s;
  }
}

【讨论】:

  • 相信你想写if ($n &lt; 0) return '-'.myFormat($n);
  • 现在不是死循环了吗?
猜你喜欢
  • 2016-10-03
  • 2019-12-17
  • 2016-11-09
  • 2020-09-06
  • 1970-01-01
  • 2018-01-26
  • 2015-02-28
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多