[JavaScript] 数字金额大写转换 v2

几天前分享了一段 JavaScript 版的《整数金额大写转换

》,不过只能处理整数的。

刚刚做了一个改进,可以处理两位小数(角和分)和负数(欠款)。

function digit_uppercase(n) {
var fraction = ['角', '分'];
var digit = [
'零', '壹', '贰', '叁', '肆',
'伍', '陆', '柒', '捌', '玖'
];
var unit = [
['元', '万', '亿'],
['', '拾', '佰', '仟']
];
var head = n < 0? '欠': '';
n = Math.abs(n);
var s = '';
for (var i = 0; i < fraction.length; i++) {
s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
}
s = s || '整';
n = Math.floor(n);
for (var i = 0; i < unit[0].length && n > 0; i++) {
var p = '';
for (var j = 0; j < unit[1].length && n > 0; j++) {
p = digit[n % 10] + unit[1][j] + p;
n = Math.floor(n / 10);
}
s = p.replace(/(零.)*零$/, '')
.replace(/^$/, '零')
+ unit[0][i] + s;
}
return head + s.replace(/(零.)*零元/, '元')
.replace(/(零.)+/g, '零')
.replace(/^整$/, '零元整');
}

整数测试数据

alert(digit_uppercase(0)); // 零元整
alert(digit_uppercase(123)); // 壹佰贰拾叁元整
alert(digit_uppercase(1000000)); // 壹佰万元整
alert(digit_uppercase(100000001)); // 壹亿零壹元整
alert(digit_uppercase(1000000000)); // 壹拾亿元整
alert(digit_uppercase(1234567890)); // 壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元整
alert(digit_uppercase(1001100101)); // 壹拾亿零壹佰壹拾万零壹佰零壹元整
alert(digit_uppercase(110101010)); // 壹亿壹仟零壹拾万壹仟零壹拾元整

小数测试数据

alert(digit_uppercase(0.12)); // 壹角贰分
alert(digit_uppercase(123.34)); // 壹佰贰拾叁元叁角肆分
alert(digit_uppercase(1000000.56)); // 壹佰万元伍角陆分
alert(digit_uppercase(100000001.78)); // 壹亿零壹元柒角捌分
alert(digit_uppercase(1000000000.90)); // 壹拾亿元玖角
alert(digit_uppercase(1234567890.03)); // 壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元叁分
alert(digit_uppercase(1001100101.00)); // 壹拾亿零壹佰壹拾万零壹佰零壹元整
alert(digit_uppercase(110101010.10)); // 壹亿壹仟零壹拾万壹仟零壹拾元壹角

负数测试数据

alert(digit_uppercase(-0.12)); // 欠壹角贰分
alert(digit_uppercase(-123.34)); // 欠壹佰贰拾叁元叁角肆分
alert(digit_uppercase(-1000000.56)); // 欠壹佰万元伍角陆分
alert(digit_uppercase(-100000001.78)); // 欠壹亿零壹元柒角捌分
alert(digit_uppercase(-1000000000.90)); // 欠壹拾亿元玖角
alert(digit_uppercase(-1234567890.03)); // 欠壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾元叁分
alert(digit_uppercase(-1001100101.00)); // 欠壹拾亿零壹佰壹拾万零壹佰零壹元整
alert(digit_uppercase(-110101010.10)); // 欠壹亿壹仟零壹拾万壹仟零壹拾元壹角

时间: 2024-10-21 16:13:45

[JavaScript] 数字金额大写转换 v2的相关文章

JavaScript数字和字符串转换的应用

这篇文章主要介绍了JavaScript数字和字符串转换的应用,需要的朋友可以参考下 1. 数字转换为字符串    a. 要把一个数字转换为字符串,只要给它添加一个空的字符串即可:   代码如下: var n = 100;  var n_as_string = n + "";    b. 要让数字更加显式地转换为字符串,可以使用String()函数:  代码如下: var string_value = String(number);    c. 使用toString()方法:   代码如

Excel表格数字大小写转换函数

  数字大小写转换函数: 实际相当于函数=NUMBERSTRING(1234567890,3),参数为3时,输出结果直接为独立数字大写. 实际相当于函数=NUMBERSTRING(1234567890,2),参数为2时,输出结果直接为金额大写. 实际相当于函数=NUMBERSTRING(1234567890,1),参数为1时,输出结果直接为整个数字的大写. value值用的是引用表格,和直接输入数字是一样.

javascript-JavaScript 时间数字如何转换成中文大写

问题描述 JavaScript 时间数字如何转换成中文大写 例如, 把2012年12月31日转换成二〇一二年十二月三十一日.在线等! 急急急!!!!! 解决方案 function numToCN(s) { var sCN = '〇一二三四五六七八九'; function getCN(s) { var c = s.charAt(0) cCN = sCN.charAt(c); return s.length == 1 ? cCN : (c == '1' ? '' : cCN) + '十' + sCN

JavaScript数字精度丢失问题总结

原文:JavaScript数字精度丢失问题总结 本文分为三个部分 JS 数字精度丢失的一些典型问题 JS 数字精度丢失的原因 解决方案(一个对象+一个函数)   一.JS数字精度丢失的一些典型问题   1. 两个简单的浮点数相加 0.1 + 0.2 != 0.3 // true   Firebug 这真不是 Firebug 的问题,可以用alert试试 (哈哈开玩笑).   看看Java的运算结果   再看看Python   2. 大整数运算 9999999999999999 == 100000

解决JavaScript数字精度丢失问题的方法_javascript技巧

本文分为三个部分 JS 数字精度丢失的一些典型问题 JS 数字精度丢失的原因 解决方案(一个对象+一个函数) 一.JS数字精度丢失的一些典型问题 1. 两个简单的浮点数相加 0.1 + 0.2 != 0.3 // true 这真不是 Firebug 的问题,可以用alert试试 (哈哈开玩笑). 看看Java的运算结果 再看看Python 2. 大整数运算 16位和17位数竟然相等,没天理啊. 又如 var x = 9007199254740992 x + 1 == x // ? 看结果 三观又

JAVA实现数字大写金额转换的方法_java

本文实例讲述了JAVA实现数字大写金额转换的方法.分享给大家供大家参考.具体如下: 例子:实现将阿拉伯数字的金额转换成中文大写金额的形式,例如: ¥1011 → 壹仟零壹拾壹元整. 大写数字为:零.壹.贰.叁.肆.伍.陆.柒.捌.玖.拾.佰.仟.万.亿 import java.io.*; import java.lang.String; public class change { public static void main(String agrs[]) { //Money用于存放输入的金额数

Javascript控制XSlt转换XML

javascript|xml|控制|转换 html> <body> <script language="javascript"> // Load XML  var xml = new ActiveXObject("Microsoft.XMLDOM") xml.async = false xml.load("cd_catalog.xml") // Load the XSL var xsl = new ActiveXOb

使用javascript将时间转换成今天,昨天,前天等格式

  这篇文章主要介绍了使用javascript将时间转换成今天,昨天,前天等格式的相关资料,需要的朋友可以参考下 方法超级简单,把时间格式化一下就好了,直接奉上代码 ? 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 function transDate() { var $time =document.getElementById("share-time"); var date = $tim

Javascript进制转换实例

  本文实例讲述了Javascript进制转换的方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"