जवाबों:
bool positive = number > 0;
bool negative = number < 0;
बेशक किसी ने वास्तव में सही उत्तर नहीं दिया,
num != 0 // num is positive *or* negative!
is positive or is negativeनहींis (positive or negative)
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);
}
}
ISignDeterminatorएक का उपयोग करके लागू करता है SignDeterminatorFactory।
int?! आप किस जादुई भूमि C # में काम कर रहे हैं?
IsImaginary।
Math.Sign विधि एक रास्ता तय करना है। यह नकारात्मक संख्याओं के लिए -1, सकारात्मक संख्याओं के लिए 1 और शून्य के बराबर मानों के लिए 0 लौटाएगा (अर्थात शून्य का कोई संकेत नहीं है)। डबल और एकल सटीक चर एक अपवाद ( ArithmeticException ) का कारण होगा यदि वे NaN के बराबर होते हैं।
Math.Sign(क्योंकि यह स्पष्ट रूप से संभावित वापसी मान परिभाषित करता है।)
num < 0 // number is negative
यह उद्योग मानक है:
int is_negative(float num)
{
char *p = (char*) malloc(20);
sprintf(p, "%f", num);
return p[0] == '-';
}
आप युवा और आपके प्रशंसक कम-से-कम संकेत देते हैं।
वापस मेरे दिन में हमें उपयोग करना था Math.abs(num) != num //number is negative!
OverflowException, तो numहै MinValueमें पारित हो जाता है जो कुछ भी प्रकार के लिए ( Int16, Int32, Int64)। अस्थायी बिंदु मानों के लिए परिणाम और भी बदतर हैं, जहां वे भी हो सकते हैं NaN, चूंकि NaN != NaN।
public static bool IsPositive<T>(T value)
where T : struct, IComparable<T>
{
return value.CompareTo(default(T)) > 0;
}
मूल निवासी प्रोग्रामर का संस्करण। छोटे-एंडियन सिस्टम के लिए व्यवहार सही है।
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;
}
इसका कभी भी इस्तेमाल न करें।
IsPositiveChecker, IsPositiveCheckerInterface, IsPositiveCheckerFactory, और IsPositiveCheckerFactoryInterface, हालांकि।
result = (Marshal.ReadByte(memory, 3) & 0x80) == 0;इसके बजाय होना चाहिए । इसके अलावा, आपके पास return result;अंत में कहीं होना चाहिए ताकि यह वास्तव में परिणाम लौटाए।
32-बिट हस्ताक्षरित पूर्णांक के लिए, जैसे कि System.Int32, intC # में aka :
bool isNegative = (num & (1 << 31)) != 0;
आपको बस यह तुलना करनी होगी कि क्या मूल्य और उसका पूर्ण मूल्य बराबर है:
if (value == Math.abs(value))
return "Positif"
else return "Negatif"
पहला पैरामीटर EAX रजिस्टर में संग्रहीत किया जाता है और परिणाम भी।
function IsNegative(ANum: Integer): LongBool; assembler;
asm
and eax, $80000000
end;