1. Код:
импортировать java.math.bigdecimal; import java.text.decimalformat; импорт java.text.numberformat; открытый формат класса {double f = 111231.5585; public void m1 () {BigDecimal Bg = новый BigDecimal (f); double f1 = bg.setscale (2, bigdecimal.round_half_up) .doublevalue (); System.out.println (f1); } / *** Наиболее удобное преобразование DecimalFormat* / public void m2 () {decimalFormat df = new DecimalFormat ("#. 00"); System.out.println (df.format (f)); } / *** Самая простая печать string.format* / public void m3 () {System.out.println (string.format ("%. 2f", f)); } public void m4 () {numberFormat nf = numberFormat.getNumberInstance (); nf.setMaximumFractionDigits (2); System.out.println (nf.format (f)); } public static void main (string [] args) {format f = new Format (); f.m1 (); f.m2 (); f.m3 (); f.m4 (); }}2. Результат вывода:
111231.56
111231.56
111231.56
111,231,56
Здесь мы предоставляем класс инструментов, который определяет методы работы, такие как добавление, вычитание, умножение, деление и округление чисел с плавающей точкой. Для справки.
Исходный файл mathextend.java:
Импорт java.math.bigdecimal; открытый класс Mathextend {// Точность работы по умолчанию. /*** обеспечивает точную операцию добавления. * @param v1 * @param v2 * @return сумма двух параметров */ public static double add (двойной v1, двойной v2) {bigdecimal b1 = new bigdecimal (double.toString (v1)); BigDecimal B2 = новый BigDecimal (Double.ToString (V2)); возврат b1.add (b2) .doublevalue (); } / ** * Предоставьте точные операции с добавлением * @param v1 * @param v2 * @return Математическая сумма двух параметров, возвращая в формат строки * / public Static String Add (String v1, String v2) {BigDecimal B1 = new BigDecimal (v1); BigDecimal B2 = новый BigDecimal (V2); возврат b1.add (b2) .toString (); } /*** обеспечивает точные операции вычитания. * @param v1 * @param v2 * @return Разница между двумя параметрами */ public static double -вычитания (Double v1, double v2) {bigdecimal b1 = new bigdecimal (double.toString (v1)); BigDecimal B2 = новый BigDecimal (Double.ToString (V2)); return b1.subtract (b2) .doublevalue (); } / **. BigDecimal B2 = новый BigDecimal (V2); возврат B1.subtract (b2) .toString (); } /*** обеспечивает точные операции умножения. * @param v1 * @param v2 * @return Продукт двух параметров */ public static Double Multiply (Double V1, Double V2) {BigDecimal B1 = новый BigDecimal (Double.ToString (v1)); BigDecimal B2 = новый BigDecimal (Double.ToString (V2)); return b1.multiply (b2) .doublevalue (); } / ** * Предоставьте точную операцию умножения * @param v1 * @param v2 * @return Математический продукт двух параметров, возвращает в формате строки * / public static string multiply (String v1, String v2) {bigdecimal b1 = new bigdecimal (v1); BigDecimal B2 = новый BigDecimal (V2); return b1.multiply (b2) .toString (); } /*** обеспечивает (относительно) точную операцию деления. When there is no situation of division, it is accurate to * 10 digits after the decimal point, and the subsequent numbers are rounded, and the rounding mode uses ROUND_HALF_EVEN * @param v1 * @param v2 * @return The quotient of the two parameters*/ public static double divide(double v1, double v2) { return divide(v1, v2, DEFAULT_DIV_SCALE); } /*** обеспечивает (относительно) точную операцию деления. Когда нет конца для завершения ситуации, параметр масштаба относится к точности *, а последующие числа округлены. Режим округления использует Round_half_even * @param v1 * @param v2 * @param Scale, чтобы указать, что он должен быть точным для нескольких десятичных знаков. * @return Covertient двух параметров*/ public static Double Divide (Double V1, Double V2, Int Scale) {return Divide (V1, V2, Scale, BigDecimal.round_half_even); } /*** обеспечивает (относительно) точную операцию деления. Когда нет конца для завершения ситуации, параметр масштаба относится к точности *, а последующие числа округлены. Режим округления использует режим округления, определенного пользователем,* @param v1* @param v2* @param scale означает, что вам нужно быть точным до нескольких цифр после десятичной точки* @param round_mode означает, что режим округления, определенного пользователем* @return Covertient из двух параметров*/ public static double divide (двойной v1, двойной v2, int intround_mode). AllodalargumentException («шкала должна быть положительным целым числом или ноль»); } BigDecimal B1 = новый BigDecimal (Double.ToString (v1)); BigDecimal B2 = новый BigDecimal (Double.ToString (V2)); return b1.divide (b2, scale, round_mode) .doublevalue (); } / ** * обеспечивает (относительно) точную операцию деления, когда существует бесконечное деление, она точна до * 10 цифр после десятичной точки, а последующие числа закруглены, а режим округления использует Round_half_even * @param v1 * @param v2 * @return ОТВЕТСТВЕННЫ разделить (v1, v2, default_div_scale); } /*** обеспечивает (относительно) точные операции деления. Когда нет конца для завершения ситуации, параметр масштаба относится к точности *, а последующие числа округлены. В режиме округления используется Round_half_even * @param v1 * @param v2 * @param scale представляет собой отношение двух параметров, которые должны быть точными для десятичной точки * @return tovertient двух параметров, возвращающих */ public static strick divide (String v1, string v2, int scale) {return divide (v1, v2, static xcale_scale_scale_scale_scale_scale. Bigdecimal.round_half_even); } /*** обеспечивает (относительно) точную операцию деления. Когда нет конца для завершения ситуации, параметр масштаба относится к точности *, а последующие числа округлены. Режим округления использует режим округления, определенного пользователем, * @param v1 * @param v2 * @param scale означает, что количество цифр после десятичной точки должно быть точным для десятичной точки * @param round_mode означает, что режим округления, указанный пользователем * @return. if (Scale <0) {бросить новое allodalargumentException («шкала должна быть положительным целым числом или ноль»); } BigDecimal B1 = новый BigDecimal (v1); BigDecimal B2 = новый BigDecimal (V2); return b1.divide (b2, scale, round_mode) .toString (); } / *** обеспечивает точное округление десятичных мест, а в режиме округления используются цифры Round_half_even* @param v, которые необходимо округлить* @param Scale, несколько цифр, сохраняемых после десятичного места* @return после округления* / public static double -ound (Double v, int scale) {return round (v, scale, bigdeciMal.round_half_even); } / ** * обеспечивает точное округление десятичных мест * @param v чисел, которые необходимо округлить * @param scale, сколько цифр сохраняется после десятичной точки * @param round_mode, указанный режим округления * @retur ноль "); } BigDecimal B = новый BigDecimal (Double.ToString (v)); вернуть b.setscale (Scale, round_mode) .doublevalue (); } / ** * обеспечивает точное округление десятичных мест, в режиме округления используется цифры Round_half_even * @param v, которые необходимо округлить * @param Scale, сколько цифр сохраняется после десятичного места * @return после возврата в формате строкости * / public Static String Round (string v, int scale) {return round (v, v, scald_hround_hround_hround_hryl_hryl_hround_hal. } / *** обеспечивает точное округление десятичных мест* @param v чисел, которые необходимо округлить* @param scale, сколько цифр сохраняется после десятичного места* @param Round_mode, указанный округление* @return, результат после округления в формате строки* / public Static String Round (String v, int scale_mode) {if (Sclipex {sclain {scalex {sclosement ratexecepection {sclase {sclase {sclain {sclosexecement ratexecepection) {if (sclase {0). быть положительным целым числом или нулю »); } Bigdecimal b = new BigDecimal (v); вернуть b.setscale (Scale, round_mode) .toString (); }}