Java:
Arrotondamento dei numeri
Come fare:
Java offre molteplici modi per arrotondare i numeri. Ecco una dimostrazione rapida con Math.round()
, BigDecimal
e DecimalFormat
.
public class RoundingDemo {
public static void main(String[] args) {
double num = 123.4567;
// Utilizzando Math.round()
long roundedNum = Math.round(num);
System.out.println(roundedNum); // Output: 123
// Utilizzando BigDecimal per un controllo maggiore
BigDecimal bd = new BigDecimal(num).setScale(2, RoundingMode.HALF_UP);
double roundedBigDecimal = bd.doubleValue();
System.out.println(roundedBigDecimal); // Output: 123.46
// Utilizzando DecimalFormat
DecimalFormat df = new DecimalFormat("#.##");
String formattedNum = df.format(num);
System.out.println(formattedNum); // Output: 123.46
}
}
Approfondimento
Storicamente, arrotondare i numeri è stato essenziale per i calcoli analogici ed è continuato nel calcolo digitale per efficienza e accuratezza. Gli errori di arrotondamento, come quelli derivati dall’aritmetica in virgola mobile, dimostrano che questo non è un problema banale - possono accumularsi e compromettere i calcoli in, ad esempio, applicazioni aerospaziali e finanziarie.
Oltre a Math.round()
, hai a disposizione BigDecimal
, che ti dà un controllo più fine sulla scala e sulla modalità di arrotondamento, e DecimalFormat
per quando devi arrotondare i numeri come parte della formattazione dell’output del testo. Alternative all’arrotondamento includono l’approssimazione per difetto, l’approssimazione per eccesso e la troncatura, che sono modi diversi di gestire la precisione e solitamente gestiti da vari metodi di Math
.
A seconda del tuo caso d’uso, la strategia di arrotondamento può variare. Ad esempio, BigDecimal
è l’opzione preferita per i calcoli finanziari, dove la precisione è critica. Al contrario, Math.round()
è un modo veloce per operazioni di uso generico dove sei meno esigente sulla modalità di arrotondamento.