Come posso verificare se un numero è positivo o negativo in C #?

Come posso verificare se un numero è positivo o negativo in C #?

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

Ovviamente a nessuno è stata data la risposta corretta,

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

ECCESSIVO!

 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); } } 
 num < 0 // number is negative 

Il metodo Math.Sign è un modo per andare. Restituirà -1 per i numeri negativi, 1 per i numeri positivi e 0 per i valori pari a zero (cioè zero non ha alcun segno). Le variabili di precisione doppie e singole causeranno un’eccezione ( ArithmeticException ) da lanciare se sono uguali a NaN.

Questo è lo standard del settore:

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

Voi giovani e la vostra fantasia meno segni.

Math.abs(num) != num //number is negative miei tempi dovevamo usare Math.abs(num) != num //number is negative !

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

Versione del programmatore nativo. Il comportamento è corretto per i sistemi little-endian.

 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); } } 

Non usarlo mai.

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

o usa “else ifs”

Per un numero intero con System.Int32 a 32 bit, come System.Int32 , aka int in C #:

 bool isNegative = (num & (1 < < 31)) != 0; 
 public static bool IsNegative(T value) where T : struct, IComparable { return value.CompareTo(default(T)) < 0; } 

Devi solo confrontare se il valore e il suo valore assoluto sono uguali:

 if (value == Math.abs(value)) return "Positif" else return "Negatif" 
 bool isNegative(int n) { int i; for (i = 0; i < = Int32.MaxValue; i++) { if (n == i) return false; } return true; } 
 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 } 

Questo codice sfrutta le istruzioni SIMD per migliorare le prestazioni.

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