大家帮我看看下面这段代码存在什么问题数字为整数时能正常显示,为小数时就不显示了,倒底哪里出问题,请教,谢谢!!!
function NumToChin()
{
this.subdw = new Array( "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟");
this.subdw2 = new Array( "分", "角");
this.subup = [[ "0", "零"],[ "1", "壹"],[ "2", "贰"],[ "3", "叁"],[ "4", "肆"],[ "5", "伍"],[ "6", "陆"],[ "7", "柒"],[ "8", "捌"],[ "9", "玖"]];
this.change = function(str)
{
var str_return = " ";
var lenstr = str.length;
for (var i = 0; i < lenstr; i++)
{
var ch = str.charCodeAt(i);//charAt
for (var j = 0; j < 10; j++)
{
if (this.subup[j][0] == this.subup[ch-48][0])
{
str_return += this.subup[j][1];
}
}
str_return = str_return + this.subdw[lenstr - i - 1];
//lenstr=lenstr-1;
}
return str_return;
}
this.change2 = function(str)
{
var str_return = " ";
var lenstr = str.length;
for (var i = 0; i < lenstr; i++)
{
var ch = str.charCodeAt(i);
for (var j = 0; j < 10; j++)
{
if (this.subup[j][0] == this.subup[ch - 48][0])
{
str_return += this.subup[j][1];
}
}
str_return = str_return + this.subdw2[lenstr - i - 1];
//lenstr=lenstr-1;
}
return(str_return);
}
this.parseNum = function(cashnum)
{
var count = 0;
var i_index = cashnum.indexOf( ". ");
var cashup = " "; if (cashnum.indexOf( ". ") == -1)
{
cashup = class1.change(cashnum) + "整";
}
else
{
var num1 = cashnum.substring(0, i_index);
cashup = class1.change(num1);
var num2 = cashnum.substring(i_index + 1);
if (num2.length == 1)
{
num2 = num2 + "0 ";
}
cashup += class1.change2(num2);
}
return cashup;
}
}
function NumToChin()
{
this.subdw = new Array( "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟");
this.subdw2 = new Array( "分", "角");
this.subup = [[ "0", "零"],[ "1", "壹"],[ "2", "贰"],[ "3", "叁"],[ "4", "肆"],[ "5", "伍"],[ "6", "陆"],[ "7", "柒"],[ "8", "捌"],[ "9", "玖"]];
this.change = function(str)
{
var str_return = " ";
var lenstr = str.length;
for (var i = 0; i < lenstr; i++)
{
var ch = str.charCodeAt(i);//charAt
for (var j = 0; j < 10; j++)
{
if (this.subup[j][0] == this.subup[ch-48][0])
{
str_return += this.subup[j][1];
}
}
str_return = str_return + this.subdw[lenstr - i - 1];
//lenstr=lenstr-1;
}
return str_return;
}
this.change2 = function(str)
{
var str_return = " ";
var lenstr = str.length;
for (var i = 0; i < lenstr; i++)
{
var ch = str.charCodeAt(i);
for (var j = 0; j < 10; j++)
{
if (this.subup[j][0] == this.subup[ch - 48][0])
{
str_return += this.subup[j][1];
}
}
str_return = str_return + this.subdw2[lenstr - i - 1];
//lenstr=lenstr-1;
}
return(str_return);
}
this.parseNum = function(cashnum)
{
var count = 0;
var i_index = cashnum.indexOf( ". ");
var cashup = " "; if (cashnum.indexOf( ". ") == -1)
{
cashup = class1.change(cashnum) + "整";
}
else
{
var num1 = cashnum.substring(0, i_index);
cashup = class1.change(num1);
var num2 = cashnum.substring(i_index + 1);
if (num2.length == 1)
{
num2 = num2 + "0 ";
}
cashup += class1.change2(num2);
}
return cashup;
}
}
我也先写了个.数字的规则验证没去写.只写个大概意思
<script type="text/javascript">
var UPPER_NUM = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
var MAX_UNIT = ['元', '拾', '佰', '仟', '萬', '拾', '佰', '仟', '亿', '拾', '佰', '仟'];
var MIN_UNIT = ['角', '分'];
function changeMoney(n) {
var _html = '', integer = n, fract;
if(n.indexOf('.') != -1) {
integer = n.split('.')[0];fract = n.split('.')[1];
}
for(var i = 0, j = integer.length, len = j; i < len; i++) {
var _index = integer.charAt(i); --j;
_html += UPPER_NUM[_index] + (_index > 0 ? MAX_UNIT[j] : '');
}
_html = _html.replace(/零{2,}/g,'零').replace(/零$/,'元');
if(fract !== undefined) {
for(var i = 0, j = 0, len = fract.length; i < len; i++) {
_html += UPPER_NUM[fract.charAt(i)] + MIN_UNIT[j++];
}
} else {
_html += '整';
}
return _html;
} alert(changeMoney('12330.35'));
alert(changeMoney('1.2'));
alert(changeMoney('5000'));
</script>