Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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 将字号转换为等效的numaric_Javascript - Fatal编程技术网

Javascript 将字号转换为等效的numaric

Javascript 将字号转换为等效的numaric,javascript,Javascript,从字符串中提取后,我需要将一个美国字号转换为数字。我在这里进行了尝试 i、 e我想把一万四千四百四十转换成它的等价数字--10440。 function word2numberConverter ( wordNumber) { wordNumber = wordNumber.toLowerCase(); //different notations under hundred var underTen = { 'zero': 0, 'one':

从字符串中提取后,我需要将一个美国字号转换为数字。我在这里进行了尝试

i、 e我想把一万四千四百四十转换成它的等价数字--10440。

function word2numberConverter ( wordNumber) {

    wordNumber = wordNumber.toLowerCase();
    //different notations under hundred
    var underTen = {
        'zero': 0,      'one': 1,       'two': 2,       'three': 3,     'four': 4,      'five': 5,           'six': 6,      'seven': 7,     'eight': 8,     'nine': 9
    };
    var underHundred = {
        'ten': 10,      'eleven': 11,       'twelve': 12,   'thirteen': 13,
        'fourteen': 14,     'fifteen': 15,  'sixteen': 16,      'seventeen': 17,    'eighteen': 18,     'nineteen': 19, 'twenty': 20,
        'thirty': 30,       'forty': 40,    'fifty': 50,        'sixty': 60,    'seventy': 70,      'eighty': 80,   'ninety': 90
        };

    //different magnitude each after the increament 10 pow 3
    var magnitude = {
        'thousand': '10^3', 'million':'10^6',       'billion':'10^9',       'trillion':'10^12',     'quadrillion':'10^15',
        'quintillion':'10^18',  'sextillion':'10^21',       'septillion':'10^24',   'octillion':'10^27',        'nonillion':'10^30',
        'decillion':'10^33',    'undecillion':'10^36',      'duodecillion':'10^39', 'tredecillion':'10^42',     'quattuordecillion':'10^45',
        'quindecillion':'10^48','sexdecillion':'10^51',     'septendecillion':'10^54',  'octadecillion':'10^57',    'novemdecillion':'10^60',
        'vigintillion':'10^63',
        };

    //window.console&&console.log(wordNumber);
    var wordnumElements = wordNumber.split(/[\s-]+/); 
    //alert('++++'+wordnumElements);
    var num = 0;
    var tempnum = 0;
    var isUnderHundred = 0;
    var isHundred = 0;
    var isMagnitude = 0;
    var isUnderTen = 0;
    var isValidNum = 1;
    var element = '';
    var wordnumElementsLength = wordnumElements.length;
    for (var i=0;i < wordnumElementsLength; i++) {
        element = wordnumElements[i];
        window.console&&console.log(element);
        //wordnumElements.forEach(function( element ) {
        if(!isValidNum) {
            //if invalid number then return
            break;
        }
        var temp = underTen[element];
        if(temp != null) {
            if(isUnderTen) {
                //can't be a valid number
                isValidNum = 0;
            } else {
                tempnum = tempnum + temp;
                isUnderTen =1;
                //reset isHundred , isUnderHundred and isMagnitude
                isHundred = 0;
                isUnderHundred = 0;
                isMAgnitude = 0;
            }
        } else {    
            var temp = underHundred[element];
            if(temp != null) {
                if(isUnderHundred){
                    //can't be a valid number
                    isValidNum = 0;
                } else {
                    tempnum = tempnum + temp;
                    isUnderHundred = 1;
                    //reset isHundred , isUnderTen and isMagnitude
                    isUnderTen = 0;
                    isHundred = 0;
                    isMagnitude = 0;
                }                
             } else {
                if ( element == "hundred" ) {

                    if(isHundred || isUnderHundred) {  // there can never be underHundred string before valid american wordnumber like one thousand forty hundred is invalid
                        //not a valid number
                        isValidNum = 0;
                    } else {
                        isHundred =1;
                        //reset underHundred and isMagnitude
                        isUnderHundred = 0;
                        isMagnitude = 0;
                        isUnderTen = 0;
                    }
                    if(!tempnum) {    // to give support for one thousand hundred forty as 1140
                        tempnum = 1;
                    }
                    tempnum = tempnum *100;

                } else {
                    temp = magnitude[element];
                    if(temp ){
                        if(isMagnitude == 1) {
                            //not a valid number
                            isValidNum = 0;
                        } else {
                            isMagnitude = 1;
                            //reset isUnderHundred and isHundred
                            isUnderHundred = 0;
                            isHundred = 0;
                            isUnderTen = 0;
                        }
                        var val = temp.split(/\^/);
                        temp = Math.pow(val[0],val[1]);

                        window.console&&console.log('num--'+num);
                        window.console&&console.log('tempnum--'+tempnum);
                        window.console&&console.log('temp--'+temp)
                        if( temp != null) {
                            if(num && isMagnitude && temp > num) {
                                window.console&&console.log('i m --> num * temp + tempnum===>'+num+'--'+temp+'--'+tempnum);
                                num = (num  + tempnum)* temp;
                            } else {
                                window.console&&console.log('i m addition--> num + tempnum * temp===>'+num+'--'+tempnum+'--'+temp);
                                num = num + tempnum * temp;
                            }
                            tempnum = 0;
                        } else {
                            isValidWordNum = 0;
                        }
                    } 
                }
            }
        }

        window.console&&console.log('enum--'+num);
        window.console&&console.log('etempnum--'+tempnum);
        window.console&&console.log('etemp--'+temp);
    }
    num = num + tempnum;
    alert("final num-"+num);
    if(!isValidNum) {
        return wordNumber;
    } else {
        return num;
    }    
}
函数word2numberConverter(wordNumber){
wordNumber=wordNumber.toLowerCase();
//百分制下的不同符号
十岁以下的var={
“零”:0,“一”:1,“二”:2,“三”:3,“四”:4,“五”:5,“六”:6,“七”:7,“八”:8,“九”:9
};
百分之一百以下的风险值={
十、十、十一、十一、十二、十二、十三、十三、,
十四、十四、十五、十五、十六、十六、十七、十七、十八、十八、十九、十九、二十、二十、,
三十、三十、四十、四十、五十、五十、六十、六十、七十、七十、八十、八十、九十、九十
};
//每增加10波3后的不同震级
var幅值={
‘千’:‘10^3’,‘百万’:‘10^6’,‘十亿’:‘10^9’,‘万亿’:‘10^12’,‘万亿’:‘10^15’,
“五百万”:“10^18”,“六百万”:“10^21”,“七百万”:“10^24”,“八百万”:“10^27”,“诺百万”:“10^30”,
“10^33”、“10^36”、“duodecillion”、“10^39”、“tredecillion”、“10^42”、“Quattourdecillion”、“10^45”,
“十五分之一”:“10^48”,“十六分之一”:“10^51”,“七分之一”:“10^54”,“八分之一”:“10^57”,“十一分之一”:“10^60”,
“活力四射”:“10^63”,
};
//window.console&&console.log(wordNumber);
var-wordnumElements=wordNumber.split(/[\s-]+/);
//警报('++'+字元素);
var num=0;
var-tempnum=0;
var低于100=0;
var isHundred=0;
var Ismagnity=0;
var小于等于0;
var isValidNum=1;
var元素=“”;
var wordnumElementsLength=wordnumElements.length;
对于(变量i=0;inum){
window.console&&console.log('i m-->num*temp+tempnum====>'+num+'--'+temp+'--'+tempnum);
num=(num+tempnum)*temp;
}否则{
window.console&&console.log('i m addition-->num+tempnum*temp===>'+num+'--'+tempnum+'--'+temp);
num=num+tempnum*temp;
}
tempnum=0;
}否则{
isValidWordNum=0;
}
} 
}
}
}
window.console&&console.log('enum--'+num);
window.console&&console.log('etempnum--'+tempnum);
window.console&&console.log('etemp--'+temp);
}
num=num+tempnum;
警报(“最终数量-”+num);
如果(!isValidNum){
返回字号;