1. Kode:
impor java.math.bigdecimal; import java.text.decimalformat; import java.text.numberformat; format kelas publik {double f = 111231.5585; public void m1 () {BigDecimal BG = BigDecimal baru (f); ganda f1 = bg.setscale (2, bigdecimal.round_half_up) .doublevalue (); System.out.println (F1); } / *** Konversi paling nyaman dari desimalformat* / public void m2 () {decimalformat df = new decimalformat ("#. 00"); System.out.println (df.format (f)); } / *** Pencetakan termudah dari 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 = format baru (); f.m1 (); f.m2 (); f.m3 (); f.m4 (); }}2. Hasil output:
111231.56
111231.56
111231.56
111.231.56
Di sini kami menyediakan kelas alat yang mendefinisikan metode operasi seperti penambahan, pengurangan, perkalian, divisi dan pembulatan bilangan titik mengambang. Untuk referensi.
File Sumber Mathextend.java:
impor java.math.bigdecimal; kelas publik Mathextend {// Default Division Accuracy Private Static Final Int Default_Div_Scale = 10; /*** menyediakan operasi penambahan yang akurat. * @param v1 * @param v2 * @return Jumlah dua parameter */ public static Double Add (v1 double, double v2) {BigDecimal b1 = BigDecimal baru (double.toString (v1)); BigDecimal B2 = BigDecimal baru (Double.ToString (V2)); return b1.add (b2) .doublevalue (); } / ** * Memberikan operasi penambahan yang akurat * @param v1 * @param v2 * @return Jumlah matematika dari dua parameter, kembali dalam format string * / string statis public add (string v1, string v2) {BigDecimal b1 = baru BigDecimal (v1); BigDecimal B2 = BigDecimal baru (V2); return b1.add (b2) .toString (); } /*** menyediakan operasi pengurangan yang akurat. * @param v1 * @param v2 * @return Perbedaan antara dua parameter */ public static double Surtract (double v1, double v2) {BigDecimal b1 = BigDecimal baru (double.toString (v1)); BigDecimal B2 = BigDecimal baru (Double.ToString (V2)); return b1.subtract (b2) .doublevalue (); } / ** * Memberikan operasi pengurangan yang akurat * @param v1 * @param v2 * @return Perbedaan matematika antara dua parameter, pengembalian dalam format string * / string statis public, string (string v1, string v2) {bigdecimal b1 = new BigDecimal (v1); BigDecimal B2 = BigDecimal baru (V2); return b1.subtract (b2) .toString (); } /*** Menyediakan operasi multiplikasi yang akurat. * @param v1 * @param v2 * @Return Produk dari dua parameter */ Public Static Double Multiply (Double V1, Double V2) {BigDecimal B1 = BigDecimal baru (double.toString (v1)); BigDecimal B2 = BigDecimal baru (Double.ToString (V2)); return b1.multiply (b2) .doublevalue (); } / ** * Memberikan operasi multiplikasi yang akurat * @param v1 * @param v2 * @return Produk matematika dari dua parameter, pengembalian dalam format string * / string statis public multiply (string v1, string v2) {BigDecimal b1 = baru BigDecimal (v1); BigDecimal B2 = BigDecimal baru (V2); return b1.multiply (b2) .tostring (); } /*** Menyediakan (relatif) operasi pembagian yang akurat. Ketika tidak ada situasi pembagian, akurat untuk * 10 digit setelah titik desimal, dan angka -angka selanjutnya dibulatkan, dan mode pembulatan menggunakan round_half_even * @param v1 * @param v2 * @return {return divide dua parameter */ public static divide ganda ganda ganda v1 v1, v1 v2) {return divide return */ public static double static (ganda v1 double v2) {return divide return */ public static double divide double (ganda v1 ganda v2) {return divide return */ public static ganda divide double double v1 double v2) {return divide return * } /*** Menyediakan (relatif) operasi pembagian yang akurat. Ketika tidak ada akhir untuk menyelesaikan situasi, parameter skala mengacu pada keakuratan *, dan angka -angka selanjutnya dibulatkan. Mode pembulatan menggunakan round_half_even * @param v1 * @param v2 * @param skala untuk menunjukkan bahwa itu harus akurat ke beberapa tempat desimal. * @return quotient dari dua parameter*/ Public Static Double Divide (Double V1, Double V2, Int Scale) {return Divide (v1, v2, skala, BigDecimal.round_half_even); } /*** Menyediakan (relatif) operasi pembagian yang akurat. Ketika tidak ada akhir untuk menyelesaikan situasi, parameter skala mengacu pada keakuratan *, dan angka -angka selanjutnya dibulatkan. Rounding mode uses user-specified rounding mode* @param v1 * @param v2 * @param scale means that you need to be precise to several digits after the decimal point* @param round_mode means user-specified rounding mode* @return quotient of two parameters*/ public static double divide(double v1,double v2,int scale, int round_mode){ if(scale < 0) { throw new IllegalargumentException ("Skala harus berupa bilangan bulat atau nol positif"); } BigDecimal B1 = BigDecimal baru (Double.ToString (V1)); BigDecimal B2 = BigDecimal baru (Double.ToString (V2)); return b1.divide (b2, skala, round_mode) .doublevalue (); } / ** * Menyediakan (relatif) operasi pembagian yang akurat, ketika ada divisi yang tak ada habisnya, itu akurat untuk * 10 digit setelah titik desimal, dan angka -angka selanjutnya dibulatkan, dan mode pembulatan menggunakan round_half_even * @param v1 * @param v2 * @return The Quotient dari dua parameters, pengembalian rangkaian dalam rangkaian rangkaian rangkaian rangkaian dalam format rangkaian dalam format rangkaian dalam bentuk rangkaian dalam rangkaian rangkaian rangkaian dalam rangkaian rangkaian rangkaian rangkaian dengan rangkaian rangkaian dalam rangkaian rangkaian rangkaian dalam rangkaian rangkaian rangkaian rangkaian dalam rangkaian rangkaian rangkaian rangkaian dalam rangkaian rangkaian rangkaian rangkaian dalam rangkaian rangkaian rangkaian rangkaian {public format {public, Divide (v1, v2, default_div_scale); } /*** Menyediakan (relatif) operasi divisi yang akurat. Ketika tidak ada akhir untuk menyelesaikan situasi, parameter skala mengacu pada keakuratan *, dan angka -angka selanjutnya dibulatkan. Mode pembulatan menggunakan round_half_even * @param v1 * @param v2 * @param skala mewakili hasil bagi dua parameter yang perlu akurat ke titik desimal * @return dari dua parameter, return */ public static string (string v1, string v2, skala int) {return divide * BigDecimal.round_half_even); } /*** Menyediakan (relatif) operasi pembagian yang akurat. Ketika tidak ada akhir untuk menyelesaikan situasi, parameter skala mengacu pada keakuratan *, dan angka -angka selanjutnya dibulatkan. Mode pembulatan menggunakan mode pembulatan yang ditentukan pengguna * @param v1 * @param v2 * @param skala berarti bahwa jumlah digit setelah titik desimal perlu akurat ke titik desimal * @param round_mode berarti pondok yang ditentukan pengguna, public divide (string vo2 parameters, dikembalikan dalam format string */ public public public static public public public (public sange dari dua parameter, dikembalikan dalam format string */ public public public static static static static static public Static if (skala <0) {lempar IllegalArgumentException baru ("Skala harus berupa bilangan bulat atau nol positif"); } BigDecimal B1 = BigDecimal baru (V1); BigDecimal B2 = BigDecimal baru (V2); return b1.divide (b2, skala, round_mode) .toString (); } / *** Menyediakan pembulatan tempat desimal yang akurat, dan mode pembulatan menggunakan bundar_half_even* @param v angka yang perlu dibulatkan* @param skala beberapa digit yang dipertahankan setelah tempat desimal* @Return hasil setelah pembulatan* / public static round (ganda v, skala int) {return round (skala v, skala besar. } /** * Provides accurate rounding of decimal places* @param v Numbers that need to be rounded* @param scale How many digits are retained after the decimal point * @param round_mode Specified rounding mode * @return Results after rounding */ public static double round(double v, int scale, int round_mode) { if(scale<0) { throw new IllegalArgumentException("The scale must be a positive integer atau nol "); } BigDecimal b = BigDecimal baru (double.toString (v)); return b.setscale (skala, round_mode) .doublevalue (); } /** * Provides accurate rounding of decimal places, the rounding mode uses ROUND_HALF_EVEN * @param v Numbers that need to be rounded* @param scale How many digits are retained after the decimal place * @return The result after rounding is returned in string format */ public static String round(String v, int scale) { return round(v, scale, BigDecimal.ROUND_HALF_EVEN); } / *** Menyediakan pembulatan yang akurat dari tempat desimal* @param V angka yang perlu dibulatkan* @param skala berapa banyak digit yang dipertahankan setelah tempat desimal* @param round_mode yang ditentukan pembulatan* @return hasil setelah pembulatan) {scale -static round {scale (string v, int scale, int round_mode) {skala int round_mode) {skala int round) {skala int round) {scale (string v, int round) {scale) Skala harus berupa bilangan bulat atau nol positif "); } BigDecimal b = BigDecimal baru (V); return b.setscale (skala, round_mode) .toString (); }}