Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const numberToWordMap = {
- 0: "zero",
- 1: "one",
- 2: "two",
- 3: "three",
- 4: "four",
- 5: "five",
- 6: "six",
- 7: "seven",
- 8: "eight",
- 9: "nine",
- 10: "ten",
- 11: "eleven",
- 12: "twelve",
- 13: "thirteen",
- 14: "fourteen",
- 15: "fifteen",
- 16: "sixteen",
- 17: "seventeen",
- 18: "eighteen",
- 19: "nineteen",
- 20: "twenty",
- 30: "thirty",
- 40: "fourty",
- 50: "fifty",
- 60: "sixty",
- 70: "seventy",
- 80: "eighty",
- 90: "ninety"
- }
- const test = (number) => {
- const result = checkWriter(number);
- console.log(`RESULT for: ${number}: `, result);
- }
- const checkWriter = number => {
- // ToDo: handle plurals
- const parts = parseFloat(number).toFixed(2).split('.');
- const [integerPartString, decimalPartString] = parts;
- const integerPart = parseInt(integerPartString, 10);
- const decimalPart = parseInt(decimalPartString, 10);
- let convertedDecimalPart = 'and zero cents';
- let convertedIntegerPart = '0 euros';
- if (integerPart > 0 && decimalPart > 0) {
- convertedDecimalPart = `and ${convertNumberToWord(decimalPart)} cents`;
- } else if(integerPart === 0 && decimalPart > 0) {
- convertedDecimalPart = `${convertNumberToWord(decimalPart)} cents`;
- }
- if (integerPart > 0) {
- convertedIntegerPart = `${convertNumberToWord(integerPart)} euros`
- }
- return `${convertedIntegerPart} ${convertedDecimalPart}`;
- }
- const convertNumberToWord = number => {
- if (numberToWordMap[number] !== undefined) {
- return `${numberToWordMap[number]} `;
- } else {
- const integers = Math.trunc(number % 10);
- const decimals = Math.trunc(number % 100 / 10);
- const hundreds = Math.trunc(number % 1000 / 100);
- const hundredThousands = Math.trunc(number % 1000000 / 1000);
- const hundredMillions = Math.trunc(number % 1000000000 / 1000000);
- let result = '';
- if (hundredMillions > 0) {
- result += convertNumberToWord(hundredMillions) + "million, ";
- }
- if (hundredThousands > 0) {
- result += convertNumberToWord(hundredThousands) + "thousand, ";
- }
- if (hundreds > 0) {
- result += convertNumberToWord(hundreds) + "hundred ";
- }
- if (decimals > 1) {
- result += convertNumberToWord(decimals * 10);
- if (integers > 0) {
- result += convertNumberToWord(integers);
- }
- } else if (decimals !== 0) {
- result += convertNumberToWord(decimals * 10 + integers);
- } else {
- result += convertNumberToWord(integers);
- }
- return result;
- }
- }
- test(0);
- test(20001.1);
- test(112.10);
- test(874327.9);
- test(978);
- test(1.01);
- test(999999.9);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement