Come posso confrontare se il valore BigDecimal
è maggiore di zero?Confronto se BigDecimal è maggiore di zero
risposta
È semplice come:
if (value.compareTo(BigDecimal.ZERO) > 0)
Il documentation for compareTo
specifica realtà che restituisca -1, 0 o 1, ma il metodo più generale Comparable<T>.compareTo
garantisce solo meno di zero, zero, o maggiore di zero per i tre casi appropriati, quindi di solito mi limito a questo confronto.
Utilizzare la funzione compareTo()
incorporata nella classe.
if (value.signum() > 0)
BigDecimal.compareTo() inizia confrontando i Signum come un'ottimizzazione. Quindi è probabilmente meglio chiamare compareTo(), in quanto è più volutamente rivelatore e costa solo il prezzo di una chiamata al metodo extra (che, a mio avviso, sarebbe comunque in linea). –
Questo fa parte dell'API pubblica. quindi è, per me, un modo migliore. l'intenzione è di determinare se il segno è positivo (cioè> ZERO) – Marc
+ 1Best risposta di tutti in questo post. – Jabir
Perché non può essere semplice come
if(bigDecimalObject.intValue() > 0)
Cosa succede se il tuo bigDecimalObject contiene i dati della stringa "abc" –
Idealmente non facciamo il nuovo BigDecimal ("abc") sebbene non sia un problema di sintassi. getta java.lang.NumberFormatException durante l'esecuzione. se la puntura è assegnata, l'oggetto stesso non può essere usato correttamente. Non vediamo mai se un BigDecimal è una stringa prima di confrontarla. Anche la domanda non ha lo scopo di verificare la presenza di null, controllare la presenza di stringhe o controllare alcune altre cose :-) – Jajikanth
BigDecimal obj = new BigDecimal("100");
if(obj.intValue()>0)
System.out.println("yes");
Perché questa risposta è migliore della risposta già accettata? – martijnn2008
L'oggetto contiene stringa numarica, nella risposta accettata il valore non è dichiarato, potrebbe essere fonte di confusione. La mia risposta avrà più chiarezza. –
- 1. È 000.000.000,00 maggiore di zero?
- 2. JSF validatore maggiore di zero
- 3. 0E30 non è ZERO
- 4. test se un valore BigDecimal è pari a zero in un'espressione JSP EL
- 5. mysql: selezionare true quando il conteggio è maggiore di zero
- 6. Verifica se BigDecimal è un valore intero
- 7. Confronto tra BigDecimal e int in Java
- 8. Perché il BigDecimal di Scala non ha ZERO?
- 9. Come utilizzare operatori di confronto come>, =, <su BigDecimal
- 10. Come rendere minore o maggiore di confronto angularjs
- 11. Verifica se un NSDate è maggiore di un altro
- 12. Come testare se un doppio è zero?
- 13. Come verificare se il GUID è zero
- 14. Bash: verifica se una stringa è "maggiore" di un'altra - come funziona internamente?
- 15. javascript se il numero maggiore di numero
- 16. Verificare che l'input dell'utente sia doppio ed è maggiore di zero?
- 17. MongoDB - Aggiorna campo se il nuovo valore è maggiore
- 18. R - l'argomento è di lunghezza zero in se istruzione
- 19. Qual è il ragionamento dietro le differenze di confronto zero nullo di javascript?
- 20. Nell'assemblaggio x86, come è possibile impostare il flag di zero (ZF) senza eseguire un'operazione di confronto?
- 21. SSE: reciproco se non zero
- 22. Maggiore di scambio confrontare-e-
- 23. ASP.NET: la casella di testo di convalida contiene un numero intero maggiore di uguale a zero?
- 24. Come è 1 maggiore di 4?
- 25. Ottenere e ordinare le righe con il valore maggiore di zero, allora le righe con valore zero
- 26. BigDecimal non può essere forzato in BigDecimal
- 27. Excel: come nascondere ore o minuti se uno è zero?
- 28. Qual è il python per Java BigDecimal?
- 29. Perché 1 non è maggiore di -0x80000000
- 30. MySQL Dove DateTime è maggiore di oggi
una parola in più di avvertimento viene chiamato per. Supponiamo che "valore" abbia un valore pari a zero ma una scala diversa da zero (ad esempio, valuta "0.00" invece di "0"). Probabilmente vuoi considerare che è uguale a zero. Il metodo 'compareTo()' lo farà davvero. ** Ma il metodo 'equals()' non lo farà. ** (Un'altra prova, se ce ne fosse bisogno, che Loki o uno dei suoi avatar è vivo e vegeto e si è spostato nello sviluppo del software.) –
Mentre sono d'accordo che questo è la soluzione idiomatica in Java, non penso che sia effettivamente leggibile. Ogni volta che incontro un'espressione come questa, mi ritrovo a scrivere un test per rassicurarmi sul fatto che ho capito bene. Forse il fatto che le classi aggiunte di recente, come 'LocalDate' includono [' isBefore'] (https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#isAfter-java.time .chrono.ChronoLocalDate-) è un'indicazione che Oracle si sente allo stesso modo. Non è l'ideale, ma penso che sia marginalmente più leggibile in queste circostanze scrivere un metodo di utilità 'isGreaterThan'. –