c# - valor - determinar si un numero es positivo negativo o cero visual basic
Convierte un nĂºmero positivo a negativo en C# (22)
Puede convertir un número negativo en positivo así:
int myInt = System.Math.Abs(-5);
¿Hay un método equivalente para hacer que un número positivo sea negativo?
¿Tal vez esto?
int n;
.... some coding....
n = n<=0? n:0-n;
Aunque llego tarde a la fiesta aquí, voy a contar algunos trucos útiles de mis días de hardware. Todos estos asumen la representación del cumplido de 2 para los números con signo.
int negate = ~i+1;
int positiveMagnitude = (i ^ (i>>31)) - (i>>31);
int negativeMagnitude = (i>>31) - (i ^ (i>>31));
Convertir un número de positivo a negativo, o negativo a positivo:
public static decimal Reverse(this decimal source)
{
return source * decimal.MinusOne;
}
De la misma manera que haces cualquier otra cosa negativa: pon un signo negativo delante de ella.
var positive = 6;
var negative = -positive;
EDITAR: Esto es incorrecto para entradas positivas ... Cometí un error al olvidar que el resto de los bits en -x (valor 2s-Complement) son los "opuestos" de su valor en + x, no es lo mismo. ASÍ QUE simplemente cambiar el bit de signo NO funcionará para números positivos.
Dejaré esto aquí para propósitos ...
O la manera complicada (creo) ...
int y = x | ~ int.MaxValue;
cause int.MaxValue is 0111 1111 1111 1111 1111 1111 1111 1111
asi que
~int.MaxValue is 1000 0000 0000 0000 0000 0000 0000 0000
y por lo tanto, cualquier int32 Or''ed con eso pondrá un 1 en el bit de signo, (haciéndolo negativo), y dejará todos los otros bits iguales ...
EDITAR: en realidad, dado que el 1000 0000 0000 0000 0000 0000 0000 0000 es en realidad el Minvalue, esto también debería funcionar:
int y = x | int.MinValue; // or, to do it to itself,
x |= int.MinValue;
La forma más fácil de a = -a hará el favor
La manera fácil:
myInt *= -1;
Multiplicar por -1.
Nota para todos los que respondieron con
- Math.Abs(myInteger)
o
0 - Math.Abs(myInteger)
o
Math.Abs(myInteger) * -1
como una forma de mantener los números negativos negativos y convertir los negativos en negativos.
Este enfoque tiene un solo defecto. No funciona para todos los enteros. El rango del tipo Int32
es de "-2 31 " a "2 31 - 1". Significa que hay un número más "negativo". En consecuencia, Math.Abs(int.MinValue)
arroja una OverflowException
.
La forma correcta es usar declaraciones condicionales:
int neg = n < 0 ? n : -n;
Este enfoque funciona para "todos" los enteros.
Para cambiar el signo de un entero, solo usa el operador de signo:
myInt = -myInt;
Para que sea negativo, independientemente de si el valor original es negativo o no, primero use el método Abs:
myInt = -Math.Abs(myInt);
Qué tal si
myInt = myInt * -1
Solo algo que quiero compartir
public decimal NumberReevaluate(decimal number, bool isPositive)
{
var tempNumber = System.Math.Abs(number);
return isPositive ? tempNumber : -tempNumber;
}
Solo por diversión:
int negativeInt = int.Parse(String.Format("{0}{1}",
"-", positiveInt.ToString()));
Actualización : la belleza de este enfoque es que puede refactorizarlo fácilmente en un generador de excepciones:
int negativeInt = int.Parse(String.Format("{0}{1}",
"thisisthedumbestquestioninhistory", positiveInt.ToString()));
Solo por más diversión:
int myInt = Math.Min(hisInt, -hisInt);
int myInt = -(int)Math.Sqrt(Math.Pow(Math.Sin(1), 2) + Math.Pow(Math.Cos(-1), 2))
* Math.Abs(hisInt);
Use binary y elimine el último bit que es responsable del signo negativo.
O use binary o para agregar un signo a un tipo de datos.
Esta solución puede parecer absurda e incompleta, pero puedo garantizar que este es el método más rápido.
Si no experimentas con lo que he publicado, esta publicación puede parecer una mierda: D
Por ejemplo, para int:
Int es un tipo de datos de 32 bits, por lo que el último bit (32º) determina el signo.
Y con un valor que tiene 0 en el lugar 32 y resto 1. Convertirá negativo no en + ve.
Por el contrario o con un valor con 1 en el lugar 32 y descanso 0.
Yo uso myInt = -myInt;
Tan simple y fácil
Si quieres tener solo resultados positivos
myInt = myInt>0 ? myInt : -myInt;
X=*-1
puede no funcionar en todos los compiladores ... ya que lee ''multiplicar'' ''RESTABLECER'' 1 en lugar de NEGATIVO. La mejor alternativa es X=(0-X)
, [QUE ES DIFERENTE DE X-=X
]
int myInt = - System.Math.Abs(-5);
int myNegInt = System.Math.Abs(myNumber) * (-1);
int negInt = -System.Math.Abs(myInt)
int negInt = 0 - myInt;
O garantizado que es negativo.
int negInt = -System.Math.Abs(someInt);
long negativeNumber = (long)positiveInt - (long)(int.MaxValue + 1);
Nadie dijo que tenía que ser un número negativo en particular .