Как проверить, является ли число положительным или отрицательным в С#?

Как проверить, является ли число положительным или отрицательным в С#?

Ответ 1

bool positive = number > 0;
bool negative = number < 0;

Ответ 2

Конечно, никто не дал правильного ответа,

num != 0   // num is positive *or* negative!

Ответ 3

OVERKILL!

public static class AwesomeExtensions
{
    public static bool IsPositive(this int number)
    {
        return number > 0;
    }

    public static bool IsNegative(this int number)
    {
        return number < 0;
    }

    public static bool IsZero(this int number)
    {
        return number == 0;
    }

    public static bool IsAwesome(this int number)
    {
        return IsNegative(number) && IsPositive(number) && IsZero(number);
    }
}

Ответ 4

num < 0 // number is negative

Ответ 5

Метод Math.Sign - это один из способов. Он будет возвращать -1 для отрицательных чисел, 1 для положительных чисел и 0 для значений, равных нулю (т.е. Нуль не имеет знака). Переменные с двойной и одиночной точностью вызывают исключение (ArithmeticException), если они равны NaN.

Ответ 6

Это отраслевой стандарт:

int is_negative(float num)
{
  char *p = (char*) malloc(20);
  sprintf(p, "%f", num);
  return p[0] == '-';
}

Ответ 7

Вы, молодые люди, и ваши причудливые знаки меньше.

В свое время нам пришлось использовать Math.abs(num) != num //number is negative!

Ответ 8

    public static bool IsPositive<T>(T value)
        where T : struct, IComparable<T>
    {
        return value.CompareTo(default(T)) > 0;
    }

Ответ 9

Родная версия программатора. Поведение является правильным для систем с прямым порядком байтов.

bool IsPositive(int number)
{
   bool result = false;
   IntPtr memory = IntPtr.Zero;
   try
   {
       memory = Marshal.AllocHGlobal(4);
       if (memory == IntPtr.Zero)
           throw new OutOfMemoryException();

       Marshal.WriteInt32(memory, number);

       result = (Marshal.ReadByte(memory, 3) & 0x80) == 0;
   }
   finally
   {
       if (memory != IntPtr.Zero)
           Marshal.FreeHGlobal(memory);
   }
   return result;
}

Никогда не используйте это.

Ответ 10

if (num < 0) {
  //negative
}
if (num > 0) {
  //positive
}
if (num == 0) {
  //neither positive or negative,
}

или используйте "else ifs"

Ответ 11

Для 32-разрядного целого числа со знаком, например System.Int32, aka int в С#:

bool isNegative = (num & (1 << 31)) != 0;

Ответ 12

public static bool IsNegative<T>(T value)
   where T : struct, IComparable<T>
{
    return value.CompareTo(default(T)) < 0;
}

Ответ 13

Вам просто нужно сравнить, если значение и его абсолютное значение равны:

if (value == Math.abs(value))
    return "Positif"
else return "Negatif"

Ответ 14

bool isNegative(int n) {
  int i;
  for (i = 0; i <= Int32.MaxValue; i++) {
    if (n == i) 
      return false;
  }
  return true;
}

Ответ 15

int j = num * -1;

if (j - num  == j)
{
     // Num is equal to zero
}
else if (j < i)
{
      // Num is positive
}
else if (j > i) 
{
     // Num is negative
}

Ответ 16

Этот код использует преимущества SIMD-инструкций для повышения производительности.

public static bool IsPositive(int n)
{
  var v = new Vector<int>(n);
  var result = Vector.GreaterThanAll(v, Vector<int>.Zero);
  return result;
}