import kotlin.math.roundToInt
import kotlin.math.roundToLong
private val thNumReader = arrayOf("", "หนึ่ง", "สอง", "สาม", "สี", "ห้า", "หก", "เจ็ด", "แปด", "เก้า")
private val thDigitReader = arrayOf("", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน")
/**
* ตัวอย่าง การใช้งานคำสั่ง thaiNumberReader, thaiBathReader
*/
fun main() {
val exampleThaiNumber = arrayOf(0, 1, 10, 11, 20, 21, 30, 31, 101, 110, 220, 221, 2095, 985405421)
val exampleThaiBath = arrayOf(0.0, 0.001, 0.25, 1.00, 10.00, 11.00, 101.53, 201.029, 9840499540.159)
println("ทดสอบคำสั่ง thaiNumberReader")
for(ex in exampleThaiNumber)
println("$ex -> ${thaiNumberReader(ex.toLong())}")
println()
println("-------------------------------")
println()
println("ทดสอบคำสั่ง thaiBathReader")
for(ex in exampleThaiBath)
println("$ex -> ${thaiBathReader(ex.toDouble())}")
}
/**
* แปลงตัวเลขเป็นคำอ่านค่าเงินภาษาไทย
* @param numBath จำนวนเงินที่ต้องการแปลง
* @return คำอ่านค่าเงินเป็นภาษาไทย
*/
fun thaiBathReader(numBath: Double): String {
return if (((numBath % 1) * 100).roundToInt() == 0)
thaiNumberReader((numBath / 1).toLong()) + "บาทถ้วน"
else if (numBath < 1)
thaiNumberReader(((numBath % 1) * 100).roundToLong()) + "สตางค์"
else
thaiNumberReader((numBath / 1).toLong()) + "บาท" +
thaiNumberReader(((numBath % 1) * 100).roundToLong()) + "สตางค์"
}
/**
* แปลงตัวเลขเป็นคำอ่านภาษาไทย
* @param num ตัวเลขที่ต้องการแปลง
* @return คำอ่านตัวเลขเป็นภาษาไทย
*/
fun thaiNumberReader(num: Long) = thaiNumReader(num)
private fun thaiNumReader(num: Long, digit: Int = 0): String {
var readThai: String = ""
val numDg = (num % 10).toInt()
if (num >= 1000000)
readThai = thaiNumReader(num / 1000000) + "ล้าน" +
thaiNumReader(num % 1000000, digit)
else {
if(num > 0) {
readThai = thaiNumReader(num / 10, digit + 1)
if (numDg > 0) {
readThai += if (digit == 1) {
when (numDg) {
2 -> "ยี่สิบ"
1 -> "สิบ"
else -> thNumReader[numDg] + thDigitReader[digit]
}
} else if (digit == 0) {
if (numDg != 1)
thNumReader[numDg]
else {
if (readThai != "") "เอ็ด" else "หนึ่ง"
}
} else
thNumReader[numDg] + thDigitReader[digit]
}
} else if(digit == 0) readThai = "ศูนย์"
}
return readThai
}
ไม่มีความเห็น