用负数格式化货币
Format money with negative number
我有一个javascript函数,可以很好地处理正数,但当输入负数时,它会警告NaN
:
function formatMoney(number) {
number = parseFloat(number.toString().match(/^'d+'.?'d{0,2}/));
//Seperates the components of the number
var components = (Math.floor(number * 100) / 100).toString().split(".");
//Comma-fies the first part
components [0] = components [0].replace(/'B(?=('d{3})+(?!'d))/g, ",");
//Combines the two sections
return components.join(".");
}
alert(formatMoney(-11));
下面是jsFiddle中的示例http://jsfiddle.net/longvu/wRYsU/
感谢您的帮助
在/^'d+'.?'d{0,2}/
中不允许有前导符号,因此必须以数字开头。第一步是允许这样做,比如:
/^-?'d+'.?'d{0,2}/
如果您将放在示例jsfiddle脚本中,您将得到一个-11
而不是NaN
的对话框。
在我看来,你可以摆脱第一个正则表达式(除非你想验证输入),并使用:
function formatAsMoney(n) {
n = (Number(n).toFixed(2) + '').split('.');
return n[0].replace(/'B(?=('d{3})+(?!'d))/g, ",") + '.' + (n[1] || '00');
}
toFixed曾经有过问题,但我认为这已经不是问题了。
相关文章:
- jQuery中是否内置了任何字符串格式化函数
- 货币代码为欧元-金额的格式不应包含小数
- 将字符串转换为格式化日期
- 将数字四舍五入到小数点后两位,以设置货币格式
- Highcharts-如何在自定义格式化程序中获得默认的y轴标签格式化程序
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 在HTML画布上格式化文本
- 格式化货币无效
- Java脚本插件,用于将数字转换为特定于区域性的货币格式,并将具有特定货币格式的非格式化数字转换为普通数字
- 图表.js 2.0 使用货币和千位分隔符格式化 Y 轴
- jQuery 表排序器对格式化货币进行排序
- 使用单个函数进行货币验证和格式化
- 如何仅检索货币符号而不从 angularjs 货币过滤器格式化价格表达式
- 如何在格式化货币时删除JavaScript中的最后一个逗号
- 用负数格式化货币
- 在输入字段中格式化货币和百分比
- 如何正确使用“x.j .”用于格式化货币的库
- 客户端javascript格式化数字(货币)
- 质量 - 格式化货币的答案框,带有逗号和美分
- 车把功能,用javascript格式化货币