有一个数字,比如 1234, 写一个函数把它转成它的英文写法,上面这个应该输出 one thousand two hundred and thirty four
英文翻译:
0 - 9 : zero, one ……
10 - 19 : ten, eleven……
20 - 100: twenty, twenty one……
100: one hundred
111 : one hundred and eleven
121 : one hundred and twenty one
1015: one thousand and fifteen
100 001: one hundred thousand and one
121886: One hundred and twenty-one thousand eight hundred and eighty-six
代码如下:<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.result{
margin-top: 30px;
padding: 20px 10px;
border: 1px solid #999;
background-color: beige
}
</style>
</head>
<body>
<p>给你1234,
<br/>输出 one thousand two hundred and thirty four</p>
<input id="num" type="number" />
<button onclick="setEnglish()">生成</button>
<div class="result" id="result"></div>
</body>
<script>
const arr1 = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'],
arr2 = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineTeen'],
arr3 = ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'],
arr4 = ['hundred', 'thousand', 'million', 'billion', 'trillion', 'quadrillion'];
function setEnglish(){
let num = document.getElementById('num').value
if(!num){
alert('请输入内容')
}
let res = this.numToEnglish(num)
document.getElementById('result').innerText = res
}
function numToEnglish(num){
strnum = num.toString() // 这一个需要用到
if(num >= 0 && num < 10){
return arr1[num]
}else if(num >= 10 && num < 20){
let key = strnum.substring(1)
return arr2[key]
}else if(num >= 20 && num < 100){
let s = strnum.substring(0,1)-2 // 十位
let g = strnum.substring(1) // 各位
return `${arr3[s]}${g > 0 ? ' '+arr1[g] : '' }`
}else if(num >= 100 && num <1000){
let b = arr1[strnum.substring(0,1)] + " " + arr4[0] // 百位
return parseInt(strnum.substring(1)) == 0 ? b : b + " and " + numToEnglish(parseInt(strnum.substring(1)))
}else{
let arrnum = parseInt(num).toLocaleString().toString().split(',')
let len = arrnum.length
let ret = ""
console.log('arrnum-->', arrnum)
for(let i = len; i > 0; i--){ // toLocaleString 整数部分每三位加一个逗号,切割成数组后,进行循环
let index = len - i // arr4 的下标
let res = ''// let num = 1008663
// arrnum = ['1', '008', '663']
// length = 3
// i = 3 index = 0 arrnum[index] = 1
// i = 2 index = 1 arrnum[index] = 008
// i = 1 index = 2 arrnum[index] = 663
if(i > 1){ //
res =numToEnglish(parseInt(arrnum[index])) + ' ' + arr4[i -1]
ret += res + ' '
}else{ // 最后一个
if(arrnum[index] > 100){
ret += numToEnglish(parseInt(arrnum[index]))
}else{
ret += ' and ' + numToEnglish(parseInt(arrnum[index]))
}
}
}
return ret
}
}
</script>
</html>