Arrotondamento e scala
Controlli la precisione e le modalità di arrotondamento
Arrotondamento e scala è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.
Scala e precisione
Ogni BigDecimal ha una scala, cioè il numero di cifre a destra della virgola decimale. Il valore 12.340 ha una scala pari a 3. Controllare la scala consente di presentare il denaro con esattamente due cifre decimali.
Esaminare scala e precisione
Chiami scale() per vedere quante cifre decimali contiene un valore e precision() per conoscere il numero totale di cifre significative.
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("12.340");
System.out.println(v.scale());
System.out.println(v.precision());
}
}setScale per correggere i decimali
setScale imposta un valore a un numero di cifre decimali scelto. Se è necessario arrotondare, deve passare un RoundingMode.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("12.3456");
System.out.println(v.setScale(2, RoundingMode.HALF_UP));
}
}HALF_UP, la modalità comune
RoundingMode.HALF_UP arrotonda al valore più vicino e, in caso di parità, lontano da zero. È l'arrotondamento usato comunemente e insegnato a scuola.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_UP));
System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_UP));
}
}HALF_EVEN, l'arrotondamento bancario
HALF_EVEN arrotonda i casi di parità verso la cifra pari più vicina. Riduce la distorsione dopo molti arrotondamenti, motivo per cui le banche lo preferiscono.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
System.out.println(new BigDecimal("2.5").setScale(0, RoundingMode.HALF_EVEN));
System.out.println(new BigDecimal("3.5").setScale(0, RoundingMode.HALF_EVEN));
}
}CEILING e FLOOR
CEILING arrotonda sempre verso l'infinito positivo, mentre FLOOR arrotonda sempre verso l'infinito negativo, indipendentemente dalla cifra eliminata.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("2.1");
System.out.println(v.setScale(0, RoundingMode.CEILING));
System.out.println(v.setScale(0, RoundingMode.FLOOR));
}
}DOWN e UP
DOWN tronca verso zero, mentre UP arrotonda sempre lontano da zero. DOWN è un semplice troncamento.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("2.9");
System.out.println(v.setScale(0, RoundingMode.DOWN));
System.out.println(v.setScale(0, RoundingMode.UP));
}
}Arrotondamento durante la divisione
La divisione può produrre decimali infiniti, quindi si specificano scala e modalità di arrotondamento direttamente nella chiamata a divide.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal bill = new BigDecimal("100.00");
BigDecimal people = new BigDecimal("3");
System.out.println(bill.divide(people, 2, RoundingMode.HALF_UP));
}
}Rimuovere gli zeri finali
stripTrailingZeros rimuove gli zeri superflui. Lo combini con toPlainString per evitare la notazione scientifica nell'output.
import java.math.BigDecimal;
public class Main {
public static void main(String[] args) {
BigDecimal v = new BigDecimal("12.300");
System.out.println(v.stripTrailingZeros().toPlainString());
}
}Formattare il denaro
Per la visualizzazione, imposti la scala a 2 con HALF_UP, così i prezzi mostrano sempre due cifre decimali, anche quando gli importi sono interi.
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
BigDecimal amount = new BigDecimal("7");
System.out.println(amount.setScale(2, RoundingMode.HALF_UP));
}
}Scegliere una modalità
Scelga HALF_UP per l'arrotondamento ordinario rivolto all'utente e HALF_EVEN in contabilità, per ridurre la distorsione cumulativa. Specifichi sempre una modalità, così il codice non genererà mai un'eccezione per risultati non terminanti.
Verifica rapida
Verifichi la sua conoscenza di scala e arrotondamento.
Riepilogo
Ha imparato a controllare la precisione:
- La scala è il numero di cifre dopo la virgola decimale
setScaleimposta il numero di cifre decimali e richiede unRoundingModeHALF_UPè l'arrotondamento comune, mentreHALF_EVENè l'arrotondamento bancarioCEILING,FLOOR,UPeDOWNcoprono gli arrotondamenti direzionali- Specifichi sempre una modalità per la divisione, così da evitare eccezioni
Domande Frequenti
La lezione «Arrotondamento e scala» è gratuita?
Sì — il testo completo di «Arrotondamento e scala» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.
Cosa imparerò in «Arrotondamento e scala»?
Controlli la precisione e le modalità di arrotondamento Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Java Academy?
Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Arrotondamento e scala»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Java Academy?
Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché non utilizzare double per il denaro
- Utilizzare BigDecimal
- Arrotondamento e scala
- BigInteger per numeri enormi