Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript函数,用于将印度货币数字转换为支持paise的单词_Javascript - Fatal编程技术网

Javascript函数,用于将印度货币数字转换为支持paise的单词

Javascript函数,用于将印度货币数字转换为支持paise的单词,javascript,Javascript,还有比这更快的解决方案吗? 在花了一些时间在谷歌上搜索和玩别人的代码后,我做了一个快速修复和可重用的函数,它可以很好地用于99、99、99999以下的数字 number2text(1234.56)将返回壹仟贰佰叁拾肆卢比伍拾陆派斯整 function number2text(value) { var fraction = Math.round(frac(value)*100); var f_text = ""; if(fraction > 0) {

还有比这更快的解决方案吗?

在花了一些时间在谷歌上搜索和玩别人的代码后,我做了一个快速修复和可重用的函数,它可以很好地用于99、99、99999以下的数字

number2text(1234.56)
将返回
壹仟贰佰叁拾肆卢比伍拾陆派斯整

function number2text(value) {
    var fraction = Math.round(frac(value)*100);
    var f_text  = "";

    if(fraction > 0) {
        f_text = "AND "+convert_number(fraction)+" PAISE";
    }

    return convert_number(value)+" RUPEE "+f_text+" ONLY";
}

function frac(f) {
    return f % 1;
}

function convert_number(number)
{
    if ((number < 0) || (number > 999999999)) 
    { 
        return "NUMBER OUT OF RANGE!";
    }
    var Gn = Math.floor(number / 10000000);  /* Crore */ 
    number -= Gn * 10000000; 
    var kn = Math.floor(number / 100000);     /* lakhs */ 
    number -= kn * 100000; 
    var Hn = Math.floor(number / 1000);      /* thousand */ 
    number -= Hn * 1000; 
    var Dn = Math.floor(number / 100);       /* Tens (deca) */ 
    number = number % 100;               /* Ones */ 
    var tn= Math.floor(number / 10); 
    var one=Math.floor(number % 10); 
    var res = ""; 

    if (Gn>0) 
    { 
        res += (convert_number(Gn) + " CRORE"); 
    } 
    if (kn>0) 
    { 
            res += (((res=="") ? "" : " ") + 
            convert_number(kn) + " LAKH"); 
    } 
    if (Hn>0) 
    { 
        res += (((res=="") ? "" : " ") +
            convert_number(Hn) + " THOUSAND"); 
    } 

    if (Dn) 
    { 
        res += (((res=="") ? "" : " ") + 
            convert_number(Dn) + " HUNDRED"); 
    } 


    var ones = Array("", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX","SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN", "TWELVE", "THIRTEEN","FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN","NINETEEN"); 
var tens = Array("", "", "TWENTY", "THIRTY", "FOURTY", "FIFTY", "SIXTY","SEVENTY", "EIGHTY", "NINETY"); 

    if (tn>0 || one>0) 
    { 
        if (!(res=="")) 
        { 
            res += " AND "; 
        } 
        if (tn < 2) 
        { 
            res += ones[tn * 10 + one]; 
        } 
        else 
        { 

            res += tens[tn];
            if (one>0) 
            { 
                res += ("-" + ones[one]); 
            } 
        } 
    }

    if (res=="")
    { 
        res = "zero"; 
    } 
    return res;
}
函数编号2文本(值){
var分数=数学四舍五入(分数(值)*100);
var f_text=“”;
如果(分数>0){
f_text=“AND”+转换数(分数)+“PAISE”;
}
返回convert_编号(值)+“卢比”+f_文本+“仅限”;
}
函数分形(f){
返回f%1;
}
函数转换_编号(编号)
{
如果((数字<0)| |(数字>9999999))
{ 
返回“数字超出范围!”;
}
var Gn=数学楼层(数字/10000000);/*Crore*/
数字-=Gn*10000000;
var kn=数学楼层(数量/100000);/*10万个*/
数量-=kn*100000;
var Hn=数学楼层(数字/1000);/*000*/
数量-=Hn*1000;
var Dn=数学楼层(数字/100);/*十(十年)*/
数字=数字%100;/*个*/
var tn=数学楼层(数字/10);
变量1=数学楼层(编号%10);
var res=“”;
如果(Gn>0)
{ 
res+=(转换为数字(Gn)+“CRORE”);
} 
如果(kn>0)
{ 
res+=(((res==)?:)+
换算单位数(kn)+“10万”);
} 
如果(Hn>0)
{ 
res+=(((res==“”)?“”:“”)+
转换_数(Hn)+“千”);
} 
如果(Dn)
{ 
res+=(((res==)?:)+
转换_数(Dn)+“百”);
} 
变量ones=数组(“,”一“,”二“,”三“,”四“,”五“,”六“,”七“,”八“,”九“,”十“,”十一“,”十二“,”十三“,”十四“,”十五“,”十六“,”十七“,”十八“,”十九”);
变量十=数组(“,”,“二十”,“三十”,“四十”,“五十”,“六十”,“七十”,“八十”,“九十”);
如果(tn>0 | one>0)
{ 
如果(!(res==“”)
{ 
res+=“和”;
} 
如果(tn<2)
{ 
res+=一[tn*10+1];
} 
其他的
{ 
res+=十个[tn];
如果(一个>0)
{ 
res+=(“-”+一个[1]);
} 
} 
}
如果(res==“”)
{ 
res=“零”;
} 
返回res;
}
函数转换器numbertowords(金额){
var words=新数组();
字[0]='';
字[1]=“一”;
字[2]=“两个”;
字[3]=“三”;
字[4]=“四”;
字[5]=“五”;
字[6]=“六”;
字[7]=“七”;
字[8]=“八”;
字[9]=“九”;
字[10]=“十”;
字[11]=“十一”;
字[12]=“十二”;
字[13]=“十三”;
字[14]=“十四”;
字[15]=“十五”;
字[16]=“十六”;
字[17]=“十七”;
字[18]=“十八”;
字[19]=“十九”;
字[20]=“二十”;
字[30]=“三十”;
字[40]=“四十”;
字[50]=“五十”;
字[60]=“六十”;
字[70]=“七十”;
字[80]=“八十”;
字[90]=“九十”;
amount=amount.toString();
var atemp=金额拆分(“.”);
var number=atemp[0]。拆分(“,”)。联接(“”);
var n_length=number.length;
var words_string=“”;

如果(n_长度印度价格基于给定数字的文字货币

125,00,00000

一亿二千五百万

功能价格(大写)(价格){
var sglDigit=[“零”、“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”],
dblDigit=[“十”、“十一”、“十二”、“十三”、“十四”、“十五”、“十六”、“十七”、“十八”、“十九”],
tensPlace=[、“十”、“二十”、“三十”、“四十”、“五十”、“六十”、“七十”、“八十”、“九十”],
handle_tens=函数(dgt、prevDgt){
返回0==dgt?”:“”+(1==dgt?DBLDIGT[prevDgt]:tensPlace[dgt])
},
handle_utlc=函数(dgt、nxtDgt、denom){
return(0!=dgt&&1!=nxtDgt?“+sglDigit[dgt]:”)+(0!=nxtDgt | | dgt>0?“+denom:”)
};
var str=“”,
digitIdx=0,
数字=0,
nxtDigit=0,
单词=[];
如果(price+=”,则isNaN(parseInt(price)))str=“”;
else if(parseInt(price)>0&&price.length=0;digitIdx--)开关(digit=price[digitIdx]-0,nxtDigit=digitIdx>0?price[digitIdx-1]-0:0,price.length-digitIdx-1){
案例0:
字.推(手柄(数字,nxtDigit,“”);
打破
案例1:
字.推(手柄十(数字,价格[DigitDX+1]);
打破
案例2:
words.push(0!=数字?“+sglDigit[数字]+“百”+(0!=价格[DigitDX+1]&&0!=价格[DigitDX+2]?”和“:”):”;
打破
案例3:
字.推(手柄(数字,nxtDigit,“千”);
打破
案例4:
字.推(手柄十(数字,价格[DigitDX+1]);
打破
案例5:
字.推(手柄(数字,nxtDigit,“Lakh”);
打破
案例6:
字.推(手柄十(数字,价格[DigitDX+1]);
打破
案例7:
字.推(手柄(数字,nxtDigit,Crore));
打破
案例8:
字.推(手柄十(数字,价格[DigitDX+1]);
打破
案例9:
words.push(0!=数字?“+sglDigit[数字]+“百”+(0!=价格[digitIdx+1]| | 0!=价格[digitIdx+2]?”和“:“Crore”):”)
}
str=words.reverse().join(“”)
}else str=“”;
返回str
}
console.log(大写价格(125000000));

console.log(price_in_words(9999999999));
第二条注释提供了解决方案。只需使用:

var num =129000.9889;
var splittedNum =num.toString().split('.')
var nonDecimal=splittedNum[0]
var decimal=splittedNum[1]
var value=price_in_words(Number(nonDecimal))+" and 
"+price_in_words(Number(decimal))+" paise"

你说的“快速解决方案”到底是什么意思?@Arvind:有3个功能和复杂的过程
var num =129000.9889;
var splittedNum =num.toString().split('.')
var nonDecimal=splittedNum[0]
var decimal=splittedNum[1]
var value=price_in_words(Number(nonDecimal))+" and 
"+price_in_words(Number(decimal))+" paise"