public static String ThaiBaht(String txt) {
String bahtTxt, n, bahtTH = "";
Double amount;
try {
amount = Double.parseDouble(txt);
} catch (Exception ex) {
amount = 0.00;
}
try {
DecimalFormat df = new DecimalFormat("####.00");
bahtTxt = df.format(amount);
String[] num = { "ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า",
"หก", "เจ็ด", "แปด", "เก้า", "สิบ" };
String[] rank = { "", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน" };
String[] temp = bahtTxt.split("[.]");
String intVal = temp[0];
String decVal = temp[1];
if (Double.parseDouble(bahtTxt) == 0)
bahtTH = "ศูนย์บาทถ้วน";
else {
for (int i = 0; i < intVal.length(); i++) {
n = intVal.substring(i, i + 1);
if (n != "0") {
if ((i == (intVal.length() - 1)) && (n == "1"))
bahtTH += "เอ็ด";
else if ((i == (intVal.length() - 2)) && (n == "2"))
bahtTH += "ยี่";
else if ((i == (intVal.length() - 2)) && (n == "1"))
bahtTH += "";
else
bahtTH += num[Integer.parseInt(n)];
bahtTH += rank[(intVal.length() - i) - 1];
}
}
bahtTH += "บาท";
if (decVal == "00")
bahtTH += "ถ้วน";
else {
for (int i = 0; i < decVal.length(); i++) {
n = decVal.substring(i, i + 1);
if (n != "0") {
if ((i == decVal.length() - 1) && (n == "1"))
bahtTH += "เอ็ด";
else if ((i == (decVal.length() - 2)) && (n == "2"))
bahtTH += "ยี่";
else if ((i == (decVal.length() - 2)) && (n == "1"))
bahtTH += "";
else
bahtTH += num[Integer.parseInt(n)];
bahtTH += rank[(decVal.length() - i) - 1];
}
}
bahtTH += "สตางค์";
}
}
} catch (Exception exe) {
System.out.print(exe.getMessage());
}
return bahtTH;
}
มาดูส่วนวิธีเรียกใช้งานบ้าง
public class Test {
public static void main(String[] args) {
String txt = "123.456";
String Bath = ThaiBaht(txt);
System.out.println(Bath);
}
}
*** ผมไม่ได้คิดเองน่ะครับ copy มาจาก thaicreate แต่ของเก่าเขียนไว้ด้วย (C#) ผมเลยเอาปรับใช้ ใน JAVA นิดหนึ่ง http://www.thaicreate.com/community/c-asp-net-convert-money-number-to-thai-text.html
ลองแล้วได้แบบนี้ครับ
ตอบลบ22201.01 = สองหมื่นสองพันสองร้อยศูนย์สิบหนึ่งบาทศูนย์สิบหนึ่งสตางค์
String bathTxt, n, bathTH = "";
ตอบลบbathTxt = "1201.01";
String[] num = {"ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า" , "สิบ"};
String[] rank = {"","สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน" };
String[] temp = bathTxt.split("[.]");
String intVal = temp[0];
String deciVal = temp[1];
if (Double.parseDouble(bathTxt) == 0)
bathTH = "ศูนย์บาทถ้วน";
else
{
for (int i = 0; i < intVal.length(); i++)
{
n = intVal.substring(i, i+1);
if (Integer.parseInt(n) != 0)
{
if ((i == (intVal.length() - 1)) && (n.indexOf("1") > -1) && intVal.charAt(intVal.length()-2) != '0')
bathTH += "เอ็ด";
else if ((i == (intVal.length() - 2)) && (n.indexOf("2") > -1))
bathTH += "ยี่";
else if ((i == (intVal.length() - 2)) && (n.indexOf("1") > -1))
bathTH += "";
else
bathTH += num[Integer.parseInt(n)];
bathTH += rank[(intVal.length() - i) - 1];
}else if(i==0)
{
bathTH += num[Integer.parseInt(n)];
}
}
bathTH += "บาท";
for (int i = 0; i < deciVal.length(); i++)
{
if (deciVal.indexOf("00") > -1)
{
bathTH += "ถ้วน";
break;
}
else {
n = deciVal.substring(i, i + 1);
if (n.indexOf("0") == -1) {
if ((i == deciVal.length() - 1) && n.indexOf("1") > -1 && deciVal.charAt(0) != '0')
bathTH += "เอ็ด";
else if ((i == (deciVal.length() - 2)) && (n.indexOf("2") > -1))
bathTH += "ยี่";
else if ((i == (deciVal.length() - 2)) && (n.indexOf("1") > -1))
bathTH += "";
else
bathTH += num[Integer.parseInt(n)];
bathTH += rank[(deciVal.length() - i) - 1];
}
}
if(i==deciVal.length()-1)
bathTH += "สตางค์";
}
}
System.out.println(bathTxt+" "+bathTH);
แก้ใหม่ได้ประมาณนี้ครับลองดูนะครับ