'Convert numerical amount to words in vb.net showing Type Expected error
I am trying to convert numeric numbers to words in vb.net. But somewhere I am getting Type Expected error. Below is my entire code. I am also putting code separately where this error is coming.
Public Shared Function ConvertNumbertoWords(number As Integer) As String
If number = 0 Then
Return "ZERO"
End If
If number < 0 Then
Return Convert.ToString("minus ") & ConvertNumbertoWords(Math.Abs(number))
End If
Dim words As String = ""
If (number / 1000000) > 0 Then
words += ConvertNumbertoWords(number / 1000000) & Convert.ToString(" MILLION ")
number = number Mod 1000000
End If
If (number / 1000) > 0 Then
words += ConvertNumbertoWords(number / 1000) & Convert.ToString(" THOUSAND ")
number = number Mod 1000
End If
If (number / 100) > 0 Then
words += ConvertNumbertoWords(number / 100) & Convert.ToString(" HUNDRED ")
number = number Mod 100
End If
If number > 0 Then
If words <> "" Then
words += "AND "
End If
Dim unitsMap = New () {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE",
"SIX", "SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN",
"TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN",
"EIGHTEEN", "NINETEEN"}
Dim tensMap = New () {"ZERO", "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY",
"SIXTY", "SEVENTY", "EIGHTY", "NINETY"}
If number < 20 Then
words += unitsMap(number)
Else
words += tensMap(number / 10)
If (number Mod 10) > 0 Then
words += " " + unitsMap(number Mod 10)
End If
End If
End If
Return words
End Function
In below line I am getting Type Expected error
Dim unitsMap = New () {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE",
"SIX", "SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN",
"TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN",
"EIGHTEEN", "NINETEEN"}
Dim tensMap = New () {"ZERO", "TEN", "TWENTY", "THIRTY", "FORTY", "FIFTY",
"SIXTY", "SEVENTY", "EIGHTY", "NINETY"}
Solution 1:[1]
You are getting this error because you are not specifying the type of array you are about to declare.i got no error when i tried with this
Dim unitsMap = New string() {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN","EIGHTEEN", "NINETEEN"}
hope this helps.
Solution 2:[2]
Even though number is an integer, number / 1000000 returns a double with the value .003256 (when number is 3256), which is > 0
For integer division, use \
If (number \ 1000000) > 0 Then
floating-point division operator
Note: number is the name if the variable in the OP. “The” number is not better formatting.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | akhil kumar |
Solution 2 |