2012-02-06 17 views
6

Tôi có ứng dụng cửa sổ mà tôi cần chuyển đổi số tiền đã nhập trong hộp văn bản thành các từ ở dạng ruppes và paise. ví dụ: Số tiền của tôi là 2356.54 thì số tiền đó sẽ hiển thị two thousand three hundred fifty six ruppes and fifty four paise only tuy nhiên, tôi có mã chuyển đổi thành chữ nhưng tôi không thể hiển thị paise .i đang bao gồm mã của mình cho mục đích tham khảo.chuyển đổi số tiền thành rupee và paise theo định dạng từ trong C#

private void btntowords_Click(object sender, EventArgs e) 
     { 
      MessageBox.Show(words(Convert.ToInt32(textBox1.Text))); 
     } 

     public string words(int numbers) 
     { 
      int number = numbers; 

      if (number == 0) return "Zero"; 
      if (number == -2147483648) return "Minus Two Hundred and Fourteen Crore Seventy Four Lakh Eighty Three Thousand Six Hundred and Forty Eight"; 
      int[] num = new int[4]; 
      int first = 0; 
      int u, h, t; 
      System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
      if (number < 0) 
      { 
       sb.Append("Minus "); 
       number = -number; 
      } 
      string[] words0 = {"" ,"One ", "Two ", "Three ", "Four ", 
"Five " ,"Six ", "Seven ", "Eight ", "Nine "}; 
      string[] words1 = {"Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", 
"Fifteen ","Sixteen ","Seventeen ","Eighteen ", "Nineteen "}; 
      string[] words2 = {"Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", 
"Seventy ","Eighty ", "Ninety "}; 
      string[] words3 = { "Thousand ", "Lakh ", "Crore " }; 
      num[0] = number % 1000; // units 
      num[1] = number/1000; 
      num[2] = number/100000; 
      num[1] = num[1] - 100 * num[2]; // thousands 
      num[3] = number/10000000; // crores 
      num[2] = num[2] - 100 * num[3]; // lakhs 
      for (int i = 3; i > 0; i--) 
      { 
       if (num[i] != 0) 
       { 
        first = i; 
        break; 
       } 
      } 
      for (int i = first; i >= 0; i--) 
      { 
       if (num[i] == 0) continue; 
       u = num[i] % 10; // ones 
       t = num[i]/10; 
       h = num[i]/100; // hundreds 
       t = t - 10 * h; // tens 
       if (h > 0) sb.Append(words0[h] + "Hundred "); 
       if (u > 0 || t > 0) 
       { 
        if (h > 0 || i == 0) sb.Append("and "); 
        if (t == 0) 
         sb.Append(words0[u]); 
        else if (t == 1) 
         sb.Append(words1[u]); 
        else 
         sb.Append(words2[t - 2] + words0[u]); 
       } 
       if (i != 0) sb.Append(words3[i - 1]); 
      } 
      return sb.ToString().TrimEnd(); 
     } 

Nó không nên hiển thị pasie nếu nó có số lượng như thế này 2356.00 vì vậy tôi đã cố gắng bằng nhiều cách để có được paise nhưng không thành công. tôi đã thử ggogle nhưng không nhận được chính xác những gì tôi muốn.

Trả lời

4

Bạn cần phải tách số thập phân và nhận hai giá trị riêng biệt trước số thập phân và một giá trị sau số thập phân. Ví dụ trong 56.2 bạn nhận được 56 riêng biệt và 2 riêng biệt và gọi cho bạn các hàm words() cho cả hai. Bạn sẽ nhận được hai chuỗi một "Năm mươi sáu" và thứ hai "hai". Bạn có thể tham gia các chuỗi này để nói "Năm mươi sáu rupee 2 paisas".

-2

Nhập đầu vào là số tối đa 999999999 đầu ra sẽ bằng chữ.

lớp `Một { string [] words0 = { "Zero", "One", "Hai", "Ba", "Bốn", "Năm", "Sáu", "Seven", "Tám", "Chín", "Mười", "Mười một", "Mười hai", "Mười ba", "Mười bốn", "Mười lăm", "Mười sáu", "Mười bảy", "Mười tám", "Mười chín", "Hai mươi "}; string [] words2 = {"Zero", "Mười", "Hai mươi", "Ba mươi", "Bốn mươi", "Năm mươi", "Sáu mươi", "Bảy mươi", "Tám mươi", "Chín mươi", "Trăm" }; chuỗi [] words3 = {"Trăm", "Ngàn", "Lakh", "Crore"}; int [] numbers = new int [] {0, 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000}; chuỗi numstr; từ chuỗi = ""; int tempNum; int temp = 0;

public void ConvertToRupee(int number) { numstr = number.ToString(); words = ""; tempNum = number; temp = 0; while (numstr != "0" && numstr.Length != 0) { switch (numstr.Length) { case 1: words += words0[tempNum]; numstr = ""; break; case 2: if (tempNum <= 20) { words += words0[tempNum]; numstr = ""; } else { temp = tempNum/numbers[2]; words += words2[temp]; tempNum = tempNum % numbers[2]; numstr = tempNum.ToString(); } break; case 3: Method1(3, "Hundred "); break; case 4: Method1(4, "Thousand "); break; case 5: Method2(4, "Thousand "); break; case 6: Method1(6, "Lakh "); break; case 7: Method2(6, "Lakh "); break; case 8: Method1(8, "Crore "); break; case 9: Method2(8, "Crore "); break; default: break; } } words += "Rupees Only "; Console.WriteLine(number.ToString() + " : " + words); }

private void Method1(int n, string wo) { temp = tempNum/numbers[n]; words += words0[temp] + wo; tempNum = tempNum % numbers[n]; numstr = tempNum.ToString(); }

private void Method2(int n, string wo) { temp = tempNum/numbers[n]; if (temp == 10) words += words0[temp] + wo; else if (temp <= 20) words += words0[temp] + wo; else { int twoDig = temp/numbers[2]; int digit = temp % numbers[2]; words += words2[twoDig] + words0[digit] + wo; } tempNum = tempNum % numbers[n]; numstr = tempNum.ToString(); } }

+1

Thật là một mớ hỗn độn! Đây chỉ là một bãi chứa mã lớn, vô dụng và mã không được định dạng đúng để có thể đọc được! –

Các vấn đề liên quan