提问人:Sohil Bagwan 提问时间:11/5/2023 最后编辑:SSSSohil Bagwan 更新时间:11/7/2023 访问量:41
想要将金额转换为印度尼西亚语中的单词
Want to Convert Amount to words in Indonesian Language
问:
请帮助我修复旨在将值转换为其印度尼西亚语描述的代码。Double
我的代码没有给出正确的翻译,例如 12.2 没有正确翻译。
Imports System
Public Function ConvertDecimalToWords(decimalNumber As Double) As String
Dim result As String = ""
' Define arrays for words in Indonesian
Dim units() As String = {"", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan"}
Dim tens() As String = {"", "sepuluh", "dua puluh", "tiga puluh", "empat puluh", "lima puluh", "enam puluh", "tujuh puluh", "delapan puluh", "sembilan puluh"}
' Split the decimal number into its integer and fractional parts
Dim integerPart As Integer = CInt(Math.Floor(decimalNumber))
Dim fractionalPart As Integer = CInt(Math.Round((decimalNumber - integerPart) * 100))
' Convert the integer part to words
If integerPart > 0 Then
result = ConvertToWords(integerPart) & " koma "
End If
' Convert the fractional part to words
If fractionalPart > 0 Then
result &= ConvertToWords(fractionalPart)
Else
result &= "nol"
End If
' Function to convert a number to words
Function ConvertToWords(number As Integer) As String
If number < 10 Then
Return units(number)
ElseIf number < 20 Then
Return tens(number - 10)
Else
Dim digit As Integer = number \ 10
Dim remainder As Integer = number Mod 10
Return tens(digit) & " " & units(remainder)
End If
End Function
Return result
End Function
答:
-1赞
SSS
11/6/2023
#1
您需要更改一些事项。
- 在模块中将数组设为私有
- 将 ConvertToWords() 函数移到另一个函数之外
- 使用 String 操作提取数字的小数部分
(不确定 #3 是否必需,我真的不会说印尼语)
' Define arrays for words in Indonesian
Private units() As String = {"", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan"}
Private tens() As String = {"", "sepuluh", "dua puluh", "tiga puluh", "empat puluh", "lima puluh", "enam puluh", "tujuh puluh", "delapan puluh", "sembilan puluh"}
Public Function ConvertDecimalToWords(decimalNumber As Double) As String
Dim result As String = ""
' Split the decimal number into its integer and fractional parts
Dim integerPart As Integer = Math.Truncate(decimalNumber)
Dim fractionalPart As Integer = 0
Dim decimalString = decimalNumber.ToString
Dim dotPos = decimalString.IndexOf(".")
If dotPos > -1 Then
fractionalPart = Val(decimalString.Substring(dotPos + 1))
End If
' Convert the integer part to words
If integerPart > 0 Then
result = ConvertToWords(integerPart) & " koma "
End If
' Convert the fractional part to words
If fractionalPart > 0 Then
result &= ConvertToWords(fractionalPart)
Else
result &= "nol"
End If
Return result
End Function
' Function to convert a number to words
Function ConvertToWords(number As Integer) As String
If number < 10 Then
Return units(number)
ElseIf number < 20 Then
Return tens(number - 10)
Else
Dim digit As Integer = number \ 10
Dim remainder As Integer = number Mod 10
Return tens(digit) & " " & units(remainder)
End If
End Function
上一个:如何更好地进行数据比较和呈现
评论