应客户的需求,希望将系统的所有金额格式化显示:整数位每隔三位加逗号,并保留两位小数。在input框输入时,焦点离开后,同样将输入的金额格式化,但保存到数据库时,保存数字而非字符串。
一.HTML格式化显示金额
将从数据库中取出的金额数字(单位为分)格式化显示出来:
<c:if test="${not empty item.getNum()}"><fmt:formatNumber value="${item.getNum()/100}" type="currency" /> </c:if>
- 1
显示的效果为:
或者设置格式化的方式:
<c:if test="${not empty item.getNum()}"><fmt:formatNumber value="${item.getNum()/100}" pattern="#,##0.0#" /> </c:if>
- 1
显示的效果为:
二.格式化input输入金额
附带几个参考方式:
JS提供的4中数字千位符格式化方法
关于WEB开发金额每三位逗号格式化
三位加逗号处理,保留两位小数
金额格式化及格式换还原
这里使用了第二条链接的方法。程序段如下:
//IE8以后才支持trim方法。这里防止方法不兼容
String.prototype.trim = function () {
return this .replace(/^\s\s*/, '' ).replace(/\s\s*$/, '' );
}
// 格式化数字成0,000.00
function formatNumber(value) {
var result = "";
//将证书部分和小数部分分开
var valueParts = value.split(".");
var mostSignificationDigit = valueParts[0].length -1; // 最高有效数字位,默认为个位
var intervalOfDigit = 0; // 逗号之间的位数(从零累计)
var digit, countOfSignificationDigit;
//按位取出整数部分的值
//如果不加下面这句话,低版本浏览器可能无法处理整数部分
var roundNum = valueParts[0].split("");
for (var i = valueParts[0].length -1; i >= 0; i--) {
digit = roundNum[i];
result = digit + result;
if (digit != "0") {
mostSignificationDigit = i;
}
//每三位添加逗号
if (3 == ++intervalOfDigit) {
result = "," + result;
intervalOfDigit = 0;
}
//alert(digit);
//alert(result);
}
if (mostSignificationDigit == -1) {
result = "0";
}
else {
countOfSignificationDigit = valueParts[0].length - mostSignificationDigit;
if (countOfSignificationDigit > 3) {
result = result.substring(result.length - (countOfSignificationDigit%3 == 0 ? countOfSignificationDigit/3 - 1 : countOfSignificationDigit/3) - countOfSignificationDigit);
}
else {
result = result.substring(result.length - countOfSignificationDigit);
}
}
if (valueParts.length == 2) {
result += ".";
var temp = 2 - valueParts[1].length; // 是否需要补0
for (var i = 0; i < temp; i++) {
valueParts[1] += "0"
}
result += valueParts[1].substring(0, 2);
}
else {
result += ".00";
}
return result;
}
// 鼠标再次聚焦文本域,就清除货币格式,显示无格式的数字
function clearAllFormat(obj){
if(obj!=null&&$(obj).val()!=null&&$(obj).val().trim().length>0){
var waitToDeleteCommaNumber = $(obj).val();
var newInputValue = waitToDeleteCommaNumber.replace(/,/g,"");
$(obj).val(newInputValue.toString());
return newInputValue.toString();
}
}
// 验证是否为浮点数
function checkNumberIsLegal22(obj){
if(!/^[0-9]+(\.[0-9]+){0,1}$/.test(obj)){
return false;
}
return true;
}
// 格式化金额类数字,每三位用逗号分隔,显示的是用逗号分隔的格式化形式
function formatMoneyByComma(obj){
if(obj!=null&&$(obj).val().trim().length>0&&checkNumberIsLegal22($(obj).val())){
// 格式化之前,先清除格式
clearAllFormat(obj);
if($(obj).val()){
var currentNumber = $(obj).val();
$(obj).val(formatNumber(currentNumber));
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
初次在使用上述方法进行字符串格式化时,上测试环境之后报错。经IE浏览器F12调试后,发现问题出在ie低版本(低于8)不支持trim()方法。
解决方案参考:
ie 7/8不支持trim的属性的解决方案
相关推荐
- `outputmoney()` 函数负责接收数字,移除逗号,保留两位小数,然后分别处理正负数,并调用 `outputdollars()` 和 `outputcents()` 函数完成格式化。 - `outputdollars()` 函数负责处理整数部分,通过循环将整数每...
在JavaScript中,格式化数字金额以用逗号隔开保留两位小数是一个常见需求,尤其是在涉及到财务数据的展示时。这样的格式化不仅可以让金额显示更加清晰,也有助于用户阅读和理解。 首先,要实现数字金额的格式化,...
对于数字的格式化,关键点在于如何判断数字的每三位并插入逗号,这通常需要我们从数字的末尾开始向前计算,每三位插入一个逗号。 具体实现方法如下:定义一个名为`formatNum`的函数,该函数接收一个字符串类型的...
话不多说,先放效果图再贴代码(为了展现思路,我面向过程写的,另外这个是针对保留两位小数的数字进行过滤,因为保留整数的太简单了)。 <!DOCTYPE html> <html> <head> <meta charset=UTF-8&...
本文将详细讲解如何利用JavaScript实现金额数字的格式化,包括加减逗号以及保留小数位数的功能。 首先,我们来看标题中提到的示例1,它是一个用于格式化金额的函数`outputmoney()`。这个函数的主要任务是将输入的...
如果用户没有指定保留的小数位数,函数将默认保留两位小数。这意味着,不管输入的数值是什么,输出的结果都将按照指定的规则格式化。 函数的核心逻辑是先将输入的金额转换为浮点数,并清除其中的非数字、非点和非...
`ROUND`、`TRUNCATE`和`CONVERT`都可以用来格式化数字并保留小数点后两位,具体选择取决于你的实际需求和对舍入行为的要求。在处理金融数据时,确保数据的精度和正确性至关重要,因此在选择函数时要特别注意其舍入...
本文主要讲解如何使用JavaScript与ASP.NET配合,实现金额的自动格式化,即每三位数字添加逗号分隔,并且保留两位小数。以下是实现这一功能的关键代码和步骤。 首先,我们创建一个ASP.NET的TextBox控件,用于用户...
`"{0:N}"`是一个标准格式字符串,它会根据当前文化信息(CultureInfo)格式化数值,通常包括千分位分隔符和2位小数。在此场景下,`numDecimal`也会被四舍五入到34.35。 另外,`decimal`类型的数值可以通过`...
2. **千分位分隔**:根据用户习惯,数字超过三位时,我们通常会在每三位后添加一个逗号作为分隔符,如1,000,000。组件会自动在用户输入时插入这些分隔符,使大数字更易读。 3. **小数点控制**:用户可能需要控制...
这在处理货币时尤为重要,因为不同的货币系统可能要求保留不同的小数位数(例如,美元通常保留两位小数,而日元可能不需要保留小数位)。同样,JavaScript格式化函数应允许调用者指定保留的小数位数。 4. 代码实现...
- 使用 `.00` 模式输出带有两位小数的货币格式。 ```jsp ``` 输出结果:12.00 - 使用 `.0#` 模式输出最多一位小数的货币格式。 ```jsp ``` 输出结果:12.0 3. **数字格式化**: - 使用 `#,#00.0#` ...
这将会把所有的`.number`元素中的数字格式化为带逗号的千位分隔,并保留两位小数。 ### 应用场景 `jquery-number-divider`插件广泛适用于各种情况,如: 1. **财务报表** - 在显示金额时,自动添加千位分隔符可以...
2. `$len`:保留的小数位数,默认为2,表示保留两位小数。 3. `$sign`:货币符号,默认为'¥',可以设置为其他符号如'$'。 函数的主要逻辑如下: 1. 判断金额正负,并保存符号。 2. 将金额取绝对值并转换为整数,...
举个例子,当调用fmoney("12345.675910",3)时,函数首先将字符串"12345.675910"转换为浮点数12345.67591,然后调用toFixed(3)得到"12345.676",最后经过格式化处理,整数部分12345被反转并每隔三位添加逗号,因此...
千分位数字格式化是编程中常见的需求,主要应用于金融、会计等领域,其中数字每隔三位用逗号隔开以增加可读性。本文将介绍如何使用JavaScript来实现数字的千分位格式化。 首先,需要了解的是,通过JavaScript实现...
在处理浮点数时,我们可以使用`%.2f`来指定保留两位小数。例如: ```php $num = 10.4567; $format_num = sprintf("%.2f", $num); echo $format_num; // 输出 10.46 ``` 第三种方法是使用`number_format()`函数,它...