Skip to content

Instantly share code, notes, and snippets.

@ctrleffive
Last active July 22, 2023 03:15
Show Gist options
  • Save ctrleffive/f76cb00cbb1632f72a0aca70ff90cd40 to your computer and use it in GitHub Desktop.
Save ctrleffive/f76cb00cbb1632f72a0aca70ff90cd40 to your computer and use it in GitHub Desktop.

💴 numToWords

Dart function for converting Indian currency from digits to words.

numToWords(amount, pai = false) {
  const real = amount.split('.')
  amount = real[0]
  let words = []
  words[0] = ''
  words[1] = 'One'
  words[2] = 'Two'
  words[3] = 'Three'
  words[4] = 'Four'
  words[5] = 'Five'
  words[6] = 'Six'
  words[7] = 'Seven'
  words[8] = 'Eight'
  words[9] = 'Nine'
  words[10] = 'Ten'
  words[11] = 'Eleven'
  words[12] = 'Twelve'
  words[13] = 'Thirteen'
  words[14] = 'Fourteen'
  words[15] = 'Fifteen'
  words[16] = 'Sixteen'
  words[17] = 'Seventeen'
  words[18] = 'Eighteen'
  words[19] = 'Nineteen'
  words[20] = 'Twenty'
  words[30] = 'Thirty'
  words[40] = 'Forty'
  words[50] = 'Fifty'
  words[60] = 'Sixty'
  words[70] = 'Seventy'
  words[80] = 'Eighty'
  words[90] = 'Ninety'
  amount = amount.toString()
  let atemp = amount.split('.')
  let number = atemp[0].split(',').join('')
  let nLength = number.length
  let wordsString = ''
  if (nLength <= 9) {
    let nArray = [0, 0, 0, 0, 0, 0, 0, 0, 0]
    let receivedNArray = []
    for (let i = 0; i < nLength; i++) {
      receivedNArray[i] = number.substr(i, 1)
    }
    for (let i = 9 - nLength, j = 0; i < 9; i++, j++) {
      nArray[i] = receivedNArray[j]
    }
    for (let i = 0, j = 1; i < 9; i++, j++) {
      if (i === 0 || i === 2 || i === 4 || i === 7) {
        if (nArray[i] === 1) {
          nArray[j] = 10 + parseInt(nArray[j])
          nArray[i] = 0
        }
      }
    }
    let value = ''
    for (let i = 0; i < 9; i++) {
      if (i === 0 || i === 2 || i === 4 || i === 7) {
        value = nArray[i] * 10
      } else {
        value = nArray[i]
      }
      if (value !== 0) {
        wordsString += words[value] + ' '
      }
      if ((i === 1 && value !== 0) || (i === 0 && value !== 0 && nArray[i + 1] === 0)) {
        wordsString += 'Crores '
      }
      if ((i === 3 && value !== 0) || (i === 2 && value !== 0 && nArray[i + 1] === 0)) {
        wordsString += 'Lakhs '
      }
      if ((i === 5 && value !== 0) || (i === 4 && value !== 0 && nArray[i + 1] === 0)) {
        wordsString += 'Thousand '
      }
      if (i === 6 && value !== 0 && (nArray[i + 1] !== 0 && nArray[i + 2] !== 0)) {
        wordsString += 'Hundred and '
      } else if (i === 6 && value !== 0) {
        wordsString += 'Hundred '
      }
    }
    wordsString = wordsString.split('  ').join(' ')
  }
  if (real.length > 1) {
    wordsString += ` Rupees and ${funcs.numToWords(real[1], true)} Paise`
  } else {
    if (!pai) {
      wordsString += '  Rupees'
    }
  }
  return wordsString
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment