انجمن وب سایت مشاوره در زمینه پروژه های برنامه نویسی و طراحی وب سایتهای تجاری
کد نمونه C# برای ضرب دو عدد ممیزی با توجه به تنظیمات پیش‌فرض سیستم برای کاراکتر ممیز - نسخه‌ی قابل چاپ

+- انجمن وب سایت مشاوره در زمینه پروژه های برنامه نویسی و طراحی وب سایتهای تجاری (http://forum.a00b.com)
+-- انجمن: سوالها و مقاله های آموزشی (/forumdisplay.php?fid=1)
+--- انجمن: مقاله های آموزشی (/forumdisplay.php?fid=3)
+--- موضوع: کد نمونه C# برای ضرب دو عدد ممیزی با توجه به تنظیمات پیش‌فرض سیستم برای کاراکتر ممیز (/showthread.php?tid=362)



کد نمونه C# برای ضرب دو عدد ممیزی با توجه به تنظیمات پیش‌فرض سیستم برای کاراکتر ممیز - ali - 09-09-2023 09:57 AM

کد نمونه C# برای ضرب دو عدد ممیزی با توجه به تنظیمات پیش‌فرض سیستم برای همه نوع کاراکتر های مختلف برای جداککنده ممیز در اعداد اعشاری
برای تبدیل رشته‌های ورودی به عدد دسیمال با توجه به تنظیمات پیش‌فرض سیستم (با توجه به اینکه هر سیستمی برای جداکننده ممیز ممکن است از یکی از کاراکتر های . یا / یا , و یا . . . استفاده نماید) باید از CultureInfo.CurrentCulture استفاده کنید تا ممیز اعشار و سپریتور معین شده و ثبت شده در سیستم را تشخیص دهید. در زیر نمونه کدی با این رویکرد آمده است:


کد:
using System;                            // (1) ایمپورت فضای نام System برای استفاده از کلاس‌ها و متدها
using System.Globalization;              // (2) ایمپورت فضای نام System.Globalization برای استفاده از CultureInfo

namespace DecimalMultiplicationApp
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();          // (3) متد کانستراکتور فرم را فراخوانی می‌کند
        }

        private void multiplyButton_Click(object sender, EventArgs e)
        {
            string input1 = textBox1.Text;  // (4) مقدار ورودی از TextBox1 را در متغیر input1 ذخیره می‌کند
            string input2 = textBox2.Text;  // (5) مقدار ورودی از TextBox2 را در متغیر input2 ذخیره می‌کند

            if (decimal.TryParse(input1, NumberStyles.Float, CultureInfo.CurrentCulture, out decimal number1) &&
                decimal.TryParse(input2, NumberStyles.Float, CultureInfo.CurrentCulture, out decimal number2))
            {
                // (6) اگر تبدیل به عدد دسیمال با موفقیت انجام شود، وارد این بلوک شده و عمل ضرب را انجام می‌دهد
                decimal result = number1 * number2;
                resultLabel.Text = "Result: " + result.ToString();  // (7) نتیجه را در Label نمایش می‌دهد
            }
            else
            {
                // (8) اگر تبدیل به عدد دسیمال با مشکل مواجه شود، پیام خطا نمایش داده می‌شود
                MessageBox.Show("Invalid input. Please enter valid decimal numbers.");
            }
        }
    }
}

در این کد، NumberStyles.Float به decimal.TryParse() اضافه شده است تا به اعشار و سپریتور صداقت معین شده در تنظیمات پیش‌فرض سیستم پایبند باشد. اینطوری، برنامه باید با توجه به تنظیمات محلی سیستم عمل کند و نیازی به تنظیم دستی نیست.