¿Cómo puedo comparar si el BigDecimalvalor es mayor que cero?
java
compare
bigdecimal
Santhosh
fuente
fuente

BigDecimalimplementaComparablelas funciones de comparación comolt, le, eq, nemejor moverlo a aComparableUtils. Por lo tanto, se pueden usar para cualquier otra claseDateo tipo personalizado.Respuestas:
Es tan simple como:
La documentación para
compareTorealmente especifica que devolverá -1, 0 o 1, pero elComparable<T>.compareTométodo más general solo garantiza menos que cero, cero o mayor que cero para los tres casos apropiados, por lo que generalmente me limito a esa comparación.fuente
valuetiene un valor de cero pero una escala distinta de cero (por ejemplo, se evalúa en0.00lugar de0). Probablemente quieras considerar que es igual a cero. ElcompareTo()método efectivamente hará esto. Pero elequals()método no lo hará. (Otra prueba, si fuera necesaria, de que Loki o uno de sus avatares está vivo y bien y se ha trasladado al desarrollo de software)LocalDateinclude,isBeforesea una indicación de que Oracle siente lo mismo. No es lo ideal, pero creo que es marginalmente más legible en estas circunstancias escribir unisGreaterThanmétodo de utilidad .compareTodevolver 0. Pero si está preocupado, debería ser fácil para usted probar.Posible mejor manera :
fuente
StringinicializadoBigDecimalpara ver si es-o no? Esa es mi mejor suposición de cómo podría funcionar. Parece más rápido para determinar realmente si el número es0. ¿Es esto correcto? Muchas gracias de antemano Anton Bessonov!BigDecimal.compareTo()método descompilado , encontrará que llamasignum()dos veces. Por lo que respecta al rendimiento,signum()es mejor.Use la
compareTo()función que está integrada en la clase.fuente
es más seguro usar el método
compareTo()impresión de consola
compareTo()devolucionesahora para tu problema puedes usar
o
Espero que te haya ayudado.
fuente
el uso de ".intValue ()" en el objeto BigDecimal no es correcto cuando desea verificar si es mayor que cero. La única opción que queda es el método ".compareTo ()".
fuente
fuente