PHP数字格式化,每三位逗号分隔数字,可以保留小数

在报价的时候为了给浏览者更清晰明确的数字,所以需要用到数字格式化,有两种方法,一种自己写函数,另一种当然是系统自带的,其实我更喜欢系统自带的。

先来系统简单的:

string number_format ( float number [, int decimals [, string dec_point, string thousands_sep]] ):

示例代码

echo number_format(‘169856420‘);

输出结果将为:

169,856,420

示例代码

echo number_format(‘1000000‘,2);

输出结果

1,000,000.00

示例代码

echo number_format(‘1000000‘,2,‘,‘,‘.‘);

输出结果

1.000.000,00

再看写的函数:

function num_format($num){

	if (!is_numeric($num)) {
		return false;
	}

	$num = explode(‘.‘, $num); // 把整数和小数分开
	$rl = $num[1]; // 小数部分的值
	$j = strlen($num[0]) % 3; // 整数有多少位
	$sl = substr($num[0], 0, $j); // 前面不满三位的数取出来
	$sr = substr($num[0], $j); // 后面的满三位的数取出来
	$i = 0;

	while ($i <= strlen($sr)) {
		$rvalue = $rvalue . ‘,‘ . substr($sr, $i, 3); // 三位三位取出再合并,按逗号隔开
		$i = $i + 3;
	}

	$rvalue = $sl . $rvalue;
	$rvalue = substr($rvalue, 0, strlen($rvalue) - 1); // 去掉最后一个逗号
	$rvalue = explode(‘,‘, $rvalue); // 分解成数组

	if ($rvalue[0] == 0) {
		array_shift($rvalue); // 如果第一个元素为0,删除第一个元素
	}

	$rv = $rvalue[0]; // 前面不满三位的数
	for ($i = 1; $i < count($rvalue); $i++) {
		$rv = $rv . ‘,‘ . $rvalue[$i];
	}

	if (!empty($rl)) {
		$rvalue = $rv . ‘.‘ . $rl; // 小数不为空,整数和小数合并
	} else {
		$rvalue = $rv; // 小数为空,只有整数
	}

	return $rvalue;
}
时间: 2024-08-21 15:11:18

PHP数字格式化,每三位逗号分隔数字,可以保留小数的相关文章

得到一个数字中每一位的数字

学习编程也有一段时间了,随着学习的不断深入,我越来越体会到了算法的重要性,最近遇到了一些非常有意思的算法,比如打印水仙花数.将数字逆置,在这两个算法中会用到一个数字钟每一位的值 如:判断数字123是否是水仙花数需要得到每一位的数字 通常计算每一位的数字的算法是: 个位:a = 123 % 10 = 3 十位:b  = 123 %100 / 10 = 2 百位::c = 123 % 100 = 2 随着位数的越来越大,这种方法满足不了程序的需求 比如计算:123445677777777777777

js金额数字格式化实现代码(三位加逗号处理保留两位置小数)

工作中很常用的东西: 例1,使数字1111111变成11,111,111.00,保留两位小数. <html> <head> <script type="text/javascript"> function outputmoney(number) { number = number.replace(/\,/g, ""); if(isNaN(number) || number == "")return "

JS格式化数字(每三位加逗号)

// 方法一function toThousands(num) { var result = [ ], counter = 0; num = (num || 0).toString().split(''); for (var i = num.length - 1; i >= 0; i--) { counter++; result.unshift(num[i]); if (!(counter % 3) && i != 0) { result.unshift(','); } } retu

批处理命令如何输出保持三位的数字,不足补0

做测试用到数字需要补0,用windows很头疼.最后终于找到了一种方法. 其实只要一句话:Set "Num=000%a%"&Set "Num=!Num:~-3!" 实例如下: @Echo Off&SetLocal EnableDelayedExpansion set a=2 Set "Num=000%a%"&Set "Num=!Num:~-3!" echo %Num% echo %a% pause 原文

关于web开发金额每隔三位逗号格式化js

获得焦点并输入效果,失去焦点效果 js代码: <script> // 格式化数字成0,000.00 function formatNumber(value) { var result = ""; var valueParts = value.split("."); var mostSignificationDigit = valueParts[0].length -1; // 最高有效数字位,默认为个位 var intervalOfDigit = 0;

java中的数字格式化

/* 关于数字格式化:java.text.DecimalFormat; 数字格式元素: # 任意数字 , 千分位 . 小数点 0 不够补0 */ import java.text.DecimalFormat; public class NumberTest01{ public static void main(String[] args){ //1.创建数字格式化对象 //需求:加入千分位. DecimalFormat df = new DecimalFormat("###,###")

?= ?: ?! 的理解及引用举例(数字格式化 1,123,000)

要理解?=和?!,首先需要理解 前瞻,后顾,负前瞻,负后顾四个概念:(有的管它叫零宽断言) // 正向前瞻: exp1(?=exp2) 查找exp2前面的exp1 // 正向后顾: (?<=exp2)exp1 查找exp2后面的exp1 // 负向前瞻: exp1(?!exp2) 查找后面不是exp2的exp1 // 负向后顾: (?<!exp2)exp1 查找前面不是exp2的exp1 举例: "中国人".replace(/(?<=中国)人/, "rr&q

50.求M的N次方的最后三位

题目描述: 正整数M 的N次方有可能是一个非常大的数字,我们只求该数字的最后三位例1:比如输入5和3 ,5的3次方为125,则输出为125 例2:比如输入2和10 2的10次方为1024 ,则输出结果为24例3:比如输入111和5 111的5次方为116850581551,则输出结果为551 练习阶段: 初级 代码/*-------------------------------... club.baby.sina.com.cn/thread-7444776-1-1.html club.baby

求M的N次方最后三位

正整数M 的N次方有可能是一个非常大的数字,我们只求该数字的最后三位 例1: 比如输入5和3 ,5的3次方为125,则输出为125 例2: 比如输入2和10  2的10次方为1024 ,则输出结果为24 例3: 比如输入111和5  111的5次方为116850581551,则输出结果为551 方法一: 因为m是比较大的数,n次方之后有可能会超出范围,我们可以利用大树相乘的方法:将数字看成一串字符串,按位相乘.但这种方法较繁琐.因为只取最后三位,我们每进行一次乘法就模1000,只留最后三位数即可