최대 2자리 정밀도의 부동 소수점 숫자를 사용하는 JavaScript 함수를 작성해야 합니다.
함수는 해당 숫자를 인도의 현재 텍스트로 변환해야 합니다.
예:
입력 번호가 -
인 경우const num = 12500
그러면 출력은 다음과 같아야 합니다. -
const output = 'Twelve Thousand Five Hundred';
예시
다음은 코드입니다 -
const num = 12500; const wordify = (num) => { const single = ["Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"]; const double = ["Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"]; const tens = ["", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"]; const formatTenth = (digit, prev) => { return 0 == digit ? "" : " " + (1 == digit ? double[prev] : tens[digit]) }; const formatOther = (digit, next, denom) => { return (0 != digit && 1 != next ? " " + single[digit] : "") + (0 != next || digit > 0 ? " " + denom : "") }; let res = ""; let index = 0; let digit = 0; let next = 0; let words = []; if (num += "", isNaN(parseInt(num))){ res = ""; } else if (parseInt(num) > 0 && num.length <= 10) { for (index = num.length - 1; index >= 0; index--) switch (digit = num[index] - 0, next = index > 0 ? num[index - 1] - 0 : 0, num.length - index - 1) { case 0: words.push(formatOther(digit, next, "")); break; case 1: words.push(formatTenth(digit, num[index + 1])); break; case 2: words.push(0 != digit ? " " + single[digit] + " Hundred" + (0 != num[index + 1] && 0 != num[index + 2] ? " and" : "") : ""); break; case 3: words.push(formatOther(digit, next, "Thousand")); break; case 4: words.push(formatTenth(digit, num[index + 1])); break; case 5: words.push(formatOther(digit, next, "Lakh")); break; case 6: words.push(formatTenth(digit, num[index + 1])); break; case 7: words.push(formatOther(digit, next, "Crore")); break; case 8: words.push(formatTenth(digit, num[index + 1])); break; case 9: words.push(0 != digit ? " " + single[digit] + " Hundred" + (0 != num[index + 1] || 0 != num[index + 2] ? " and" : " Crore") : "") }; res = words.reverse().join("") } else res = ""; return res }; console.log(wordify(num));
출력
다음은 콘솔의 출력입니다 -
Twelve Thousand Five Hundred