Java:
Округлення чисел
Як:
Java пропонує кілька способів округлення чисел. Ось короткий демонстраційний приклад з Math.round()
, BigDecimal
і DecimalFormat
.
public class RoundingDemo {
public static void main(String[] args) {
double num = 123.4567;
// Використовуючи Math.round()
long roundedNum = Math.round(num);
System.out.println(roundedNum); // Вивід: 123
// Використовуючи BigDecimal для більшого контролю
BigDecimal bd = new BigDecimal(num).setScale(2, RoundingMode.HALF_UP);
double roundedBigDecimal = bd.doubleValue();
System.out.println(roundedBigDecimal); // Вивід: 123.46
// Використовуючи DecimalFormat
DecimalFormat df = new DecimalFormat("#.##");
String formattedNum = df.format(num);
System.out.println(formattedNum); // Вивід: 123.46
}
}
Поглиблено
Історично, округлення чисел було необхідним для аналогових обчислень і перейшло до цифрових обчислень для підвищення ефективності та точності. Помилки округлення, як-от при роботі з плаваючою комою, показують, що це не тривіальна проблема — вони можуть накопичувати помилки в обчисленнях, наприклад, в аерокосмічній галузі та фінансових застосуваннях.
Окрім Math.round()
, у вас є BigDecimal
, який дає вам більший контроль над масштабом та режимом округлення, а також DecimalFormat
, коли вам потрібно округлити числа як частину форматування текстового виводу. Альтернативами округленню є методи до нижнього скраю, верхнього скраю, та обрізання, які є різними способами обробки точності і зазвичай обробляються різними методами Math
.
Залежно від вашого випадку використання, стратегія округлення може варіюватися. Наприклад, BigDecimal
є ідеальним для фінансових обчислень, де критично важлива точність. У контрасті, Math.round()
є швидким способом для загальноцільових операцій, де ви менше переймаєтеся режимом округлення.