有没有办法轻松检查int?

时间:2016-02-27 17:13:30

标签: c#

是否有一个简单的表达式可以放入if语句来检查值是否为int? 像这样,检查x是否为int:

x = 1

if (Diceroll() = 1)
{
    x = x * 0.75
}
if (Diceroll() = 2)
{
    x = x * 1.25
}
if (Diceroll() = 3)
{
    x = x * 1
}


if (x != int)
{
    consol.writeline("X is not an int")
}
if (x = int)
{
    consol.writeline("X is an int")
}

4 个答案:

答案 0 :(得分:4)

你可以这样写:

double x;

// your code here

if (x != Math.Floor(x))
   Console.WriteLine("X is not an int")
else
   Console.WriteLine("X is an int")

另请参阅此答案:https://stackoverflow.com/a/1650120/3901618关于比较浮点值(根据CodeCaster的评论)。

答案 1 :(得分:0)

您可能需要稍微指定一下您的问题。首先,x - 对象的类型是什么?

其次,您是否要严格测试其数据类型是否为int? 这很容易:

 object p = ....;
 bool is_int = p is int;

或者您想检查其他内容?例如......

  • ...如果p是Int64或An Uint32等,则上述操作会失败 基本上任何其他整数类型,不是严格的int(Int32)
  • 以上也会因双倍p = 1而失败。
  • ......它也会 字符串p =“1”
  • 失败

您可能想要或不想考虑这些案例?如果是这样,他们需要额外的工作。

答案 2 :(得分:0)

对于你的问题有两种不同的解释,如果你问的是“x”的值是否可以是整数,你可以使用。

int temp = 0;
string x = "numberofsomesort";
if (!int.TryParse(x,out temp))
{
    Console.Writeline("X is not an int");
}

或者,如果您有一个对象,并且想要检查其类型,则使用。

object x;

if (!(x is int))
{
    Console.Writeline("X is not an int");
}

编辑:查看新代码,第一个建议是正确的,因为您正在检查“x”的值是否可以转换为整数。

答案 3 :(得分:0)

您可以通过两种方式实现:

int aIntValue;
if(int.TryParse(x, out aIntValue))

如果int.TryParse返回true,它会将值'x'转换为变量“aIntValue”。如果返回false,则'x'不是数字。

或者你可以这样做:

if(!(x is int))