¿Qué método Java toma un int
y devuelve +1 o -1? El criterio para esto es si el int
es positivo o negativo. Revisé la documentación pero soy malo al leerla y no puedo encontrarla. Sé que lo he visto en algún lado.¿Qué método Java toma un int y devuelve +1 o -1?
Respuesta
Math.signum(double i)
Devuelve la función signo del argumento; cero si el argumento es cero, 1.0 si el argumento es mayor que cero, -1.0 si el argumento es menor que cero. Casos especiales:
- Si el argumento es
NaN
, entonces el resultado esNaN
. - Si el argumento es cero positivo o cero negativo, entonces el resultado es el mismo que el argumento.
Parámetros:
- d - el valor de punto flotante cuya signum se va a devolver
devoluciones: La función signo del argumento
Desde: 1,5
Math.signum(value)
hará el truco, pero ya que devuelve flotante o doble (de acuerdo con el par ameter) tendrá que echarlo:
int sign = (int)Math.signum(value);
EDIT: acaba de comprobar, de JDK 1.5 también tiene directa:
Integer.signum(value);
Uso Integer.signum(int i)
, pero si quieres un poco de encargo en línea de código:
int ans = i < 0 ? -1 : 1;
si quieren 0 también:
int ans = i == 0 ? 0 : (i < 0 ? -1 : 1);
Eso debería ser 'int ans' para ambos. – defectivehalt
Mierda, tienes razón, editado :) –
No hagas esto, hará que alguien se detenga y piense, eso es lo último que quieres en el medio de analizar algún error. Convertirlo en un método externo o dividirlo en un if (dado que probablemente el número sea solo una entrada a una instrucción if), sería mucho más simple decir (si i <0) else (i> 0) else ... . –
Para la diversión:
return (i > 0) ? 1 : ((i < 0) ? -1 : 0);
Estrictamente evaluar a -1 o 1, y el refrigerador (probablemente más eficiente también) que n < 0 ? -1: 1
:
(n >> 31) | 1
En caso de que quiera utilizarla para long
también:
(n >> 63) | 1
- 1. Compara dos números y devuelve -1, 0 o 1
- 2. ¿Por qué Java BigDecimal devuelve 1E + 1?
- 3. ¿Por qué GetCurrentProcess devuelve -1?
- 4. C#: ExecuteNonQuery() devuelve -1
- 5. ¿Por qué IndexOf devuelve -1?
- 6. ¿Por qué ISNUMERIC ('.') Devuelve 1?
- 7. ¿Por qué un unsigned int 1 es menor que un char y -1?
- 8. Android Location.getAccuracy() devuelve 1
- 9. (-1 >> 1) == -1 - ¿Por qué?
- 10. sin sobrecarga para el método "ToString" toma 1 argumentos
- 11. URLConnection.getContentLength() devuelve -1
- 12. exec siempre devuelve -1 (o 127)
- 13. ¿Qué significa 1. # INF00, -1. # IND00 y -1. # IND significa?
- 14. ¿Por qué -1 >> 1 es -1? ¡Y 1 >> 1 es 0!
- 15. mysql_affected_rows() devuelve -1
- 16. ¿Por qué es -1> sizeof (int)?
- 17. metaclase error: tipo .__ init __() toma 1 o 3 argumentos
- 18. ExecuteNonQuery() devuelve -1 siempre
- 19. Haskell: Datastruture con O (1) anexión y O (1) indización?
- 20. En Javascript, ¿por qué [1, 2] == [1, 2] o ({a: 1}) == ({a: 1}) es falso?
- 21. ¿Qué significa INT (1) en MySQL?
- 22. ¿por qué cout.tellp siempre devuelve -1?
- 23. recuento MySQLi (*) siempre devuelve 1
- 24. JSON values 1 o 0 - int o boolean
- 25. C++ sqrt devuelve -1 # IND000000000000
- 26. Haskell: Equation Expander 1+ (1+ (1+ (1+ (...)))) = ∞
- 27. ¿Por qué (1 >> 0x80000000) == 1?
- 28. Obtener un valor doble aleatorio entre -1 y 1
- 29. Java fusionar 2 colecciones en O (1)
- 30. java: ¿está utilizando una estática final int = 1 mejor que solo una 1 normal?
¿Qué hay de 0, es positivo o negativo? – fortran
@fortran: La respuesta 'signum' predominante se encarga de eso también. –
devuelve 0 en 0. – Halo