70٪ تخفیف ویژه جشنواره تابستانه توسینسو
پایان تخفیف تا:
مشاهده دوره‌ها
0

نمایش اعداد وارد شده کاربر به صورت حروف

سلام دوستان

چه راهکاری دارید که وقتی کاربرد عدد مثلا '12000000' وارد کرد، در لیبل حروف 'دوازده میلیون' براش ارسال کنیم

ممنون

پرسیده شده در 1396/07/01 توسط

2 پاسخ

0

اگه اعداد زیاد نیست مثلا نهایت 30 تاس یه ارایه تعریف کن اعداد و به حروف بنویس داخلش و کاربر هر عددی وارد کرد ایندکس همون ارایه و برگردون اما اگه اعداد بزرگه بیا یه ارایه تعریف کن حروف اعداد تا 20 و بنویس یه ارایه هم تعریف کن برای قسمت دهگان یعنی به این شکل

String [] = {"سی","چهل","پنجاه"......}

واسه صدگان هم میتونی یه ارایه تعریف کنی فقط بنویسی صد,دویست,.... بستگی به اندازه اعداد داره.

حالا کاربر اگه عدد کمتر از 20 وارد کنه مشکلی نیست از همون ارایه اول خونه متناظر و نمایش میدیم ولی اگه مثلا وارد 32 میایم به ده تقسیم میکنیم میشه 3 از ارایه دوم خونه سوم و نمایش میدیم و در کنارش از ارایه اول خونه دوم و نمیش میدیم.

اگه زیاد متوجه نشدی اینو نگاه کنید برای اعداد انگلیسی هست.

https://gist.github.commadan712be79a395424bf773be87

پاسخ در 1396/07/01 توسط
2

سلام و عرض ادب، برای تبدیل عدد به حروف می تونید از کد زیر استفاده کنید:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace NFMS
{
    class PNumberTString
    {
        private static string[] yakan = new string[10] { "صفر", "یک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه" };
        private static string[] dahgan = new string[10] { "", "", "بیست", "سی", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود" };
        private static string[] dahyek = new string[10] { "ده", "یازده", "دوازده", "سیزده", "چهارده", "پانزده", "شانزده", "هفده", "هجده", "نوزده" };
        private static string[] sadgan = new string[10] { "", "یکصد", "دویست", "سیصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد" };
        private static string[] basex = new string[5] { "", "هزار", "میلیون", "میلیارد", "تریلیون" };
        private static string getnum3(int num3)
        {
            string s = "";
            int d3, d12;
            d12 = num3 % 100;
            d3 = num3 / 100;
            if (d3 != 0)
                s = sadgan[d3] + " و ";
            if ((d12 >= 10) && (d12 <= 19))
            {
                s = s + dahyek[d12 - 10];
            }
            else
            {
                int d2 = d12 / 10;
                if (d2 != 0)
                    s = s + dahgan[d2] + " و ";
                int d1 = d12 % 10;
                if (d1 != 0)
                    s = s + yakan[d1] + " و ";
                s = s.Substring(0, s.Length - 3);
            };
            return s;
        }
        public string num2str(string snum)
        {
            string stotal = "";
            if(snum  =="") return "صفر";
            if (snum == "0")
            {
                return yakan[0];
            }
            else
            {
                snum = snum.PadLeft(((snum.Length - 1) / 3 + 1) * 3, '0');
                int L = snum.Length / 3 - 1;
                for (int i = 0; i <= L; i++)
                {
                    int b = int.Parse(snum.Substring(i * 3, 3));
                    if (b != 0)
                        stotal = stotal + getnum3(b) + " " + basex[L - i] + " و ";
                }
                stotal = stotal.Substring(0, stotal.Length - 3);
            }
            return stotal;
        }
    }
}

کد بالا از این لینک برداشت شده.

پاسخ در 1396/07/02 توسط

پاسخ شما