我有一行代码可以获取表格中的行数,然后显示计数。在这种情况下,它显示下载次数。
现在计数非常小但是当它变大(大于1000)时我想将其格式化为在正确的位置显示逗号:
1000
100000
1,000,000
或者也许是。 1.000 1.000.000
最简单的方法是什么?
答案 0 :(得分:16)
您可以使用number_format()
功能:
$str = number_format($number);
使用“。”而不是“,”:
$str = number_format($number, 0, ',', '.');
答案 1 :(得分:5)
您还可以在查询中使用FORMAT(X, D):
将数字X格式化为格式 '#,###,###。##',四舍五入到D十进制 place,并将结果作为a返回 串。如果D为0,则结果为否 小数点或小数部分。
的MySQL>选择格式(12332.123456,4);
-> '12,332.1235'
的MySQL>选择格式(12332.1,4);
-> '12,332.1000'
的MySQL>选择格式(12332.2,0);
-> '12,332'
编辑:
我正要补充说“使用这种方法的缺点是你的代码中没有那个数字”,但显然这不再是问题,从PHP 5.3开始,多亏了parse类的NumberFormatter函数:
NumberFormatter :: parse numfmt_parse
- 解析数字
实施例
<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
$num = "1.234.567,891";
echo $fmt->parse($num)."\n";
echo $fmt->parse($num, NumberFormatter::TYPE_INT32)."\n";
?>
答案 2 :(得分:2)
我相信您正在寻找PHP内置number_format
。
答案 3 :(得分:1)
如果有人正在寻找PHP number_format
函数的反向(通过这个问题的标题),这里有一个:
/**
* @param string $string
* @param int $decimals
* @param string $dec_point
* @param string $thousands_sep
*
* @throws InvalidArgumentException
* @return float
*/
function number_from_format($string, $decimals = 0, $dec_point = '.', $thousands_sep = ',') {
$buffer = $string = (string) $string;
$buffer = strtr($buffer, array($thousands_sep => '', $dec_point => '.'));
$float = (float) $buffer;
$test = number_format($float, $decimals, $dec_point, $thousands_sep);
if ($test !== $string) {
throw new InvalidArgumentException(sprintf('Unable to parse float from "%s" as number "%s".', $string, $test));
}
return $float;
}
用法示例:
var_dump(number_from_format('1,200.00', 2)); # double(1200)