Відповіді:
bool positive = number > 0;
bool negative = number < 0;
Звичайно, ніхто не дав правильної відповіді,
num != 0 // num is positive *or* negative!
is positive or is negative
ніis (positive or negative)
НАДОБАЙТЕ!
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;
десь там в кінці, щоб він фактично повернув результат.
if (num < 0) {
//negative
}
if (num > 0) {
//positive
}
if (num == 0) {
//neither positive or negative,
}
або використовувати "else ifs"
Вам просто потрібно порівняти, якщо значення та його абсолютне значення рівні:
if (value == Math.abs(value))
return "Positif"
else return "Negatif"
Перший параметр зберігається в регістрі EAX і результат.
function IsNegative(ANum: Integer): LongBool; assembler;
asm
and eax, $80000000
end;