نوشته شده توسط
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!");
}