วันพุธที่ 25 มีนาคม พ.ศ. 2558

แปลงตัวเลขเป็นตัวหนังสือ Java - Convert Number Thai Java


 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

2 ความคิดเห็น:

  1. ไม่ระบุชื่อ11 มกราคม 2561 เวลา 16:03

    ลองแล้วได้แบบนี้ครับ
    22201.01 = สองหมื่นสองพันสองร้อยศูนย์สิบหนึ่งบาทศูนย์สิบหนึ่งสตางค์

    ตอบลบ
  2. ไม่ระบุชื่อ23 กรกฎาคม 2562 เวลา 16:55

    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);
    แก้ใหม่ได้ประมาณนี้ครับลองดูนะครับ

    ตอบลบ

การติดตั้ง SAP ABAP

ครั้งแรกผมว่าจะสอนวิธีติดตั้งเอง แต่ก็กลัวเรื่อง ลิขสิทธิ์ (เอ๊ะ หรือว่าคิดมากไปเอง)  เอาเป็นว่า ไปดูเว็บฝรั่งก็ได้น่ะ หรือไม่ก็ youtube ...