09-09-2023, 09:57 AM
کد نمونه C# برای ضرب دو عدد ممیزی با توجه به تنظیمات پیشفرض سیستم برای همه نوع کاراکتر های مختلف برای جداککنده ممیز در اعداد اعشاری
برای تبدیل رشتههای ورودی به عدد دسیمال با توجه به تنظیمات پیشفرض سیستم (با توجه به اینکه هر سیستمی برای جداکننده ممیز ممکن است از یکی از کاراکتر های . یا / یا , و یا . . . استفاده نماید) باید از CultureInfo.CurrentCulture استفاده کنید تا ممیز اعشار و سپریتور معین شده و ثبت شده در سیستم را تشخیص دهید. در زیر نمونه کدی با این رویکرد آمده است:
برای تبدیل رشتههای ورودی به عدد دسیمال با توجه به تنظیمات پیشفرض سیستم (با توجه به اینکه هر سیستمی برای جداکننده ممیز ممکن است از یکی از کاراکتر های . یا / یا , و یا . . . استفاده نماید) باید از 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() اضافه شده است تا به اعشار و سپریتور صداقت معین شده در تنظیمات پیشفرض سیستم پایبند باشد. اینطوری، برنامه باید با توجه به تنظیمات محلی سیستم عمل کند و نیازی به تنظیم دستی نیست.