ساخت معدل گیر در کنسول سی شارپ
اکر بخواهیم یک برنامه نوشته که در آن متغیری تعریف کنیم که عددی از 0 تا 20 گرفته یعنی هم عدد صحیح و هم عدد اعشار مثلا 20 و 19/5 باید از چه کدی استفاده کنیم؟
کد زیر فقط عدد صحیح را می گیرد چگونه باید آن را به متغیری تبدیل کنیم که هم عدد صحیح و هم اعشار بگیرد.
int n =Convert.ToInt32(Console.ReadLine());
if ((int.TryParse(Console.ReadLine(), out n) == false) || (n < 0) || (n > 20))
{
Console.WriteLine("Error: Invalid input!");
}
نقل قول: ساخت معدل گیر در کنسول سی شارپ
نقل قول:
نوشته شده توسط
mahdavi1385
اکر بخواهیم یک برنامه نوشته که در آن متغیری تعریف کنیم که عددی از 0 تا 20 گرفته یعنی هم عدد صحیح و هم عدد اعشار مثلا 20 و 19/5 باید از چه کدی استفاده کنیم؟
کد زیر فقط عدد صحیح را می گیرد چگونه باید آن را به متغیری تبدیل کنیم که هم عدد صحیح و هم اعشار بگیرد.
int n =Convert.ToInt32(Console.ReadLine());
if ((int.TryParse(Console.ReadLine(), out n) == false) || (n < 0) || (n > 20))
{
Console.WriteLine("Error: Invalid input!");
}
همیشه می توانید اعداد اعشاری و صحیح رو بین انواع داده مختلفی مثل float و int تفکیک کنید ولی وقتی مثل مثال شما لزومی به تفکیک نباشه استفاده از یک نوع داده مثل float یا double یا decimal برای هر دوشون کفایت می کنه. اعداد اعشاری مثل 19.5 و 3.14
float n;
if ((float.TryParse(Console.ReadLine()
, System.Globalization.NumberStyles.Number
, System.Globalization.CultureInfo.InvariantCulture, out n) == false)
|| (n < 0) || (n > 20))
{
Console.WriteLine("Error: Invalid input!");
}
ولی اگر می خواهید ممیز رو با / مشخص کنید، این رو باید به #C اطلاع بدید چون همچین تفسیری از / در فرمت های مرسوم زبان ها نیست :
float n;
var cultureInfo = (System.Globalization.CultureInfo) System.Globalization. CultureInfo.InvariantCulture.Clone();
cultureInfo.NumberFormat.NumberDecimalSeparator = "/";
if ((float.TryParse(Console.ReadLine()
, System.Globalization.NumberStyles.Number
, cultureInfo, out n) == false)
|| (n < 0) || (n > 20))
{
Console.WriteLine("Error: Invalid input!");
}
نقل قول: ساخت معدل گیر در کنسول سی شارپ
نقل قول:
نوشته شده توسط
the king
همیشه می توانید اعداد اعشاری و صحیح رو بین انواع داده مختلفی مثل float و int تفکیک کنید ولی وقتی مثل مثال شما لزومی به تفکیک نباشه استفاده از یک نوع داده مثل float یا double یا decimal برای هر دوشون کفایت می کنه. اعداد اعشاری مثل 19.5 و 3.14
float n;
if ((float.TryParse(Console.ReadLine()
, System.Globalization.NumberStyles.Number
, System.Globalization.CultureInfo.InvariantCulture, out n) == false)
|| (n < 0) || (n > 20))
{
Console.WriteLine("Error: Invalid input!");
}
ولی اگر می خواهید ممیز رو با / مشخص کنید، این رو باید به #C اطلاع بدید چون همچین تفسیری از / در فرمت های مرسوم زبان ها نیست :
float n;
var cultureInfo = (System.Globalization.CultureInfo) System.Globalization. CultureInfo.InvariantCulture.Clone();
cultureInfo.NumberFormat.NumberDecimalSeparator = "/";
if ((float.TryParse(Console.ReadLine()
, System.Globalization.NumberStyles.Number
, cultureInfo, out n) == false)
|| (n < 0) || (n > 20))
{
Console.WriteLine("Error: Invalid input!");
}
درست شد بسیار متشکرم