¿Cómo puedo comparar si el valor BigDecimal
es mayor que cero?Comparar si BigDecimal es mayor que cero
Respuesta
Es tan simple como:
if (value.compareTo(BigDecimal.ZERO) > 0)
El documentation for compareTo
realidad especifica que le proporcione -1, 0 o 1, pero el Comparable<T>.compareTo
método más general sólo garantiza menor que cero, cero o mayor que cero para los tres casos apropiados, así que por lo general me limito a esa comparación.
Utilice compareTo()
función que está incorporada en la clase.
if (value.signum() > 0)
BigDecimal.compareTo() comienza comparando firmas como una optimización. Así que probablemente sea mejor llamar a compareTo(), ya que es más reveladora de intenciones y solo cuesta el precio de una llamada a un método adicional (que sospecho que se incluiría de todos modos). –
Esto es parte de la API pública. por lo que es, para mí, una mejor manera. la intención ES determinar si el signo es positivo (es decir,> CERO) – Marc
+ 1 Mejor respuesta que todos en esta publicación. – Jabir
¿Por qué no puede ser tan simple como
if(bigDecimalObject.intValue() > 0)
¿Qué sucede si su bigDecimalObject contiene datos de la cadena "abc" –
Lo ideal es que no hagamos un nuevo BigDecimal ("abc"), aunque no es un problema de sintaxis. arroja java.lang.NumberFormatException durante la ejecución. si se asigna la picadura, el objeto en sí no se puede usar correctamente. Nunca vemos si un BigDecimal es una cadena antes de compararlo. Además, la Pregunta no tiene como objetivo comprobar la nulidad, verificar si no hay cadena o verificar otras cosas :-) – Jajikanth
BigDecimal obj = new BigDecimal("100");
if(obj.intValue()>0)
System.out.println("yes");
¿Por qué esta respuesta es mejor que la respuesta ya aceptada? – martijnn2008
El obj contiene cadena numaric, en la respuesta aceptada el valor no se declara, puede ser confuso. Mi respuesta tendrá más claridad. –
- 1. ¿000,000,000.00 es mayor que cero?
- 2. ¿Double.MIN_VALUE es mayor que cero en Java?
- 3. Cómo restablecer BigDecimal a cero
- 4. BigDecimal multiplicar por cero
- 5. mysql - seleccione true cuando count es mayor que cero
- 6. 0E30 no es cero
- 7. Comprobando si un valor BigDecimal es cero en una expresión JSP EL
- 8. Regex mayor que cero con 2 lugares decimales
- 9. ¿Cómo comprobar si RUBY_VERSION es mayor que cierta versión?
- 10. Comprobando si un NSDate es mayor que otro
- 11. Obtener y ordenar filas con valor mayor que cero, entonces filas con valor cero
- 12. ¿Por qué el BigDecimal de Scala no tiene un CERO?
- 13. Bash - pruebas para comprobar si una cadena es 'mayor' que otro - ¿cómo funciona internamente?
- 14. Cómo comprobar si el GUID es cero
- 15. SSE: recíproco si no es cero
- 16. timediff es mayor que 2 minutos
- 17. menos el porcentaje mayor que vs porcentaje mayor que (es decir, -%> vs%>)
- 18. Cómo puedo comparar cualquier tipo numérico a cero en C#
- 19. Mayor que menos, python
- 20. ASP.NET: Validar cuadro de texto contiene un número entero mayor que igual a cero?
- 21. Validar si la edad es mayor de 18 años
- 22. JavaScript triplicar mayor que
- 23. la construcción de secuencias que crea una secuencia vacía si es más bajo es mayor que el límite superior
- 24. ¿Cómo puedo saber si una variable en xslt es mayor que otra
- 25. WPF Disparador que funcionaría si el valor es igual o mayor
- 26. cómo determinar si el elemento kth más grande del montón es mayor que x
- 27. si la cadena es alfabéticamente mayor que otra cadena en el objetivo
- 28. ¿Cómo verificar Perl si el permiso de archivo es mayor que 755?
- 29. Eficiente conjunto de intersección: decida si la intersección es mayor que k
- 30. ¿Cómo comprobar si la fecha y hora es mayor que 20 segundos
una palabra adicional de advertencia se pide. Supongamos que 'valor' tiene un valor de cero pero una escala distinta de cero (por ejemplo, evalúa a' 0.00' en lugar de '0'). Probablemente desee considerar que es igual a cero. El método 'compareTo()' hará esto. ** Pero el método 'igual()' no. ** (Otra prueba, si alguna fue necesaria, que Loki o uno de sus avatares está vivo y bien y se ha movido al desarrollo de software.) –
Aunque estoy de acuerdo en que esto es la solución idiomática en Java, no creo que sea realmente legible. Cada vez que encuentro una expresión como esta, me encuentro escribiendo una prueba para asegurarme de que la tengo de la manera correcta. Quizás el hecho de que las clases agregadas recientemente, como 'LocalDate' incluya [' isBefore'] (https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#isAfter-java.time .chrono.ChronoLocalDate-) es una indicación de que Oracle se siente de la misma manera. No es ideal, pero creo que es marginalmente más legible en estas circunstancias escribir un método 'isGreaterThan' de utilidad. –