1. Code:
importieren java.math.bigdecimal; import java.text.decimalformat; import java.text.numberformat; public class format {double f = 111231.5585; public void m1 () {BigDecimal bg = new BigDecimal (f); double f1 = bg.setscale (2, bigdecimal.round_half_up) .doubleValue (); System.out.println (F1); } / *** Die bequemste Umwandlung von DecimalFormat* / public void m2 () {DecimalFormat df = new DecimalFormat ("#. 00"); System.out.println (df.format (f)); } / *** Der einfachste Druck von 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. Ausgangsergebnis:
111231.56
111231.56
111231.56
111.231,56
Hier bieten wir eine Werkzeugklasse an, die die Betriebsmethoden wie Addition, Subtraktion, Multiplikation, Aufteilung und Rundung der Schwimmpunktzahlen definiert. Als Referenz.
Quelldatei mathExtend.java:
import Java.math.bigDecimal; öffentliche Klasse mathemente {// Standard Division Operation Accuracy Private statische endgültige int default_div_scale = 10; /*** Bietet einen genauen Zusatzbetrieb. * @param v1 * @param v2 * @return Die Summe von zwei Parametern */ public static double add (doppelte v1, doppelte v2) {BigDecimal b1 = neu BigDecimal (double.toString (v1)); BigDecimal B2 = neues BigDecimal (double.toString (v2)); return b1.add (b2) .doubleValue (); } / ** * Geben Sie genaue Additionsvorgänge an * @param v1 * @param v2 * @return Die mathematische Summe von zwei Parametern, die in String -Format zurückkehren * / public static String add (String v1, String v2) {BigDecimal b1 = neu Bigdecimal (v1); BigDecimal B2 = neues Bigdecimal (v2); return b1.add (B2) .ToString (); } /*** Bietet genaue Subtraktionsvorgänge. * @param v1 * @param v2 * @return die Differenz zwischen zwei Parametern */ public static double subtract (double v1, double v2) {BigDecimal b1 = neu BigDecimal (double.toString (v1)); BigDecimal B2 = neues BigDecimal (double.toString (v2)); return b1.subtract (b2) .doubleValue (); } / ** * Geben Sie eine genaue Subtraktionsoperation an * @param v1 * @param v2 * @return Die mathematische Differenz zwischen zwei Parametern, Rückgabe im String -Format * / public static String subtrahiert (String v1, String v2) {BigDecimal b1 = new BigDecimal (v1); BigDecimal B2 = neues Bigdecimal (v2); return b1.subtract (B2) .ToString (); } /*** Bietet genaue Multiplikationsvorgänge. * @param v1 * @param v2 * @return produkt von zwei parametern */ public static double multiply (double v1, double v2) {BigDecimal b1 = new BigDecimal (double.toString (v1)); BigDecimal B2 = neues BigDecimal (double.toString (v2)); return b1.multiply (b2) .doubleValue (); } / ** * Geben Sie einen genauen Multiplikationsvorgang an * @param v1 * @param v2 * @return Das mathematische Produkt zweier Parameter, kehrt im String -Format zurück * / public static String multiply (String v1, String v2) {BigDecimal b1 = new BigDecimal (v1); BigDecimal B2 = neues Bigdecimal (v2); return b1.multiply (B2) .ToString (); } /*** liefert (relativ) einen genauen Abteilungsbetrieb. Wenn es keine Situation der Teilung gibt, ist es auf * 10 Ziffern nach dem Dezimalpunkt genau, und die nachfolgenden Zahlen werden abgerundet, und der Rundungsmodus verwendet Round_Half_even * @param v1 * @param v2 * @return Der Quotient der beiden Parameter */ öffentliche statische Doppel -Divide (Double V1, Double V2) {V1, V1, V1, V1, V1, V1, V1, V1, V1, V1, V1, V1, V1, V1, V1, V1, DiviDe, Division) {v1, v1, v1, v1, v2, v2, statische Division (doppelte v1, doppelte v2) {v1, v1, v1, v1, v1, v1, v1, v1, v1, v1, v1, addscale; } /*** liefert (relativ) einen genauen Abteilungsbetrieb. Wenn es kein Ende gibt, um die Situation zu vervollständigen, bezieht sich der Skalenparameter auf die Genauigkeit von *und die nachfolgenden Zahlen werden abgerundet. Der Rundungsmodus verwendet Round_Half_even * @param v1 * @param v2 * @Param Skala, um anzuzeigen, dass er zu mehreren Dezimalstellen genau sein muss. * @return Quotient von zwei Parametern*/ public statische Doppeldividierung (Doppel V1, Double V2, int Skala) {Return Divide (V1, V2, Skala, BigDecimal.round_Half_even); } /*** liefert (relativ) einen genauen Abteilungsbetrieb. Wenn es kein Ende gibt, um die Situation zu vervollständigen, bezieht sich der Skalenparameter auf die Genauigkeit von *und die nachfolgenden Zahlen werden abgerundet. Der Rundungsmodus verwendet den benutzerdefinierten Rundungsmodus* @param v1* @param v2* @param scaste bedeutet, dass Sie nach dem Dezimalpunkt* @param Round_Mode genau zu mehreren Ziffern sein müssen. IllegalArgumentException ("Die Skala muss eine positive Ganzzahl oder Null sein"); } BigDecimal b1 = neu BigDecimal (double.toString (v1)); BigDecimal B2 = neues BigDecimal (double.toString (v2)); return b1.divide (b2, scale, Round_mode) .doubleValue (); } / ** * liefert (relativ) genaue Abteilungsoperation, wenn es endlose Teilung gibt, ist es auf * 10 Ziffern nach dem Dezimalpunkt genau, und die nachfolgenden Zahlen werden abgerundet, und der Rundungsmodus verwendet Round_Half_even * @param v1 * @param v2 * @return Die Anführungszeichen der beiden Parameter, die in String -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format -Format (String Format * / public static Dividus) (String v1) (Retching). Divide (v1, v2, default_div_scale); } /*** bietet (relativ) genaue Abteilungsvorgänge. Wenn es kein Ende gibt, um die Situation zu vervollständigen, bezieht sich der Skalenparameter auf die Genauigkeit von *und die nachfolgenden Zahlen werden abgerundet. Der Rundungsmodus verwendet Round_Half_even * @param v1 * @param v2 * @Param Skala repräsentiert den Quotienten der beiden Parameter, die auf den Dezimalpunkt * @return den Quotienten der beiden Parameter, Rückgabe */ Public Static String Divide (String V1, String V2, Int Scale) {Rückgabe -Division (V1, V1, V1, V1, V1, V1, DIGLET_Div_div_div_scal,) darstellen. BigDecimal.round_half_even); } /*** liefert (relativ) einen genauen Abteilungsbetrieb. Wenn es kein Ende gibt, um die Situation zu vervollständigen, bezieht sich der Skalenparameter auf die Genauigkeit von *und die nachfolgenden Zahlen werden abgerundet. Der Rundungsmodus verwendet den benutzerspezifizierten Rundungsmodus * @param v1 * @param v2 * @param skala bedeutet, dass die Anzahl der Ziffern nach dem Dezimalpunkt genau auf den Dezimalpunkt * @param Round_Mode bedeutet, dass das benutzerdefinierte Rundungsmodus * @return das Quotient der beiden Parameter, die in der String-Format, in der Streicher-Streich-Station, in der String-Streich-Station, in der String-Sting-Station-Station (String uwd), in der String-Sting-Streich-String-Streichung (String V2, in der String-Streicher-Streich-Station) (String uw uw uw uw uw uw uw teur) (in Int u. if (scale <0) {werfen neuer illegalArgumentException ("Die Skala muss eine positive Ganzzahl oder Null sein"); } BigDecimal b1 = neu BigDecimal (v1); BigDecimal B2 = neues Bigdecimal (v2); return b1.divide (b2, scale, Round_mode) .ToString (); } / *** bietet eine genaue Rundung der Dezimalstellen, und der Rundungsmodus verwendet Round_Half_even* @param v -Nummern, die abgerundet werden müssen. } / ** * bietet eine genaue Rundung der Dezimalstellen * @param v -Zahlen, die abgerundet werden müssen. null"); } BigDecimal b = neu BigDecimal (double.toString (v)); return b.setscale (scale, Round_mode) .DoubleValue (); } / ** * Bietet eine genaue Rundung der Dezimalstellen. Der Rundungsmodus verwendet Round_Half_even * @param v -Nummern, die abgerundet werden müssen. } / *** bietet eine genaue Rundung der Dezimalstellen* @param v -Nummern, die abgerundet werden müssen. eine positive Ganzzahl oder Null sein "); } BigDecimal b = new BigDecimal (v); return b.setscale (scale, Round_mode) .ToString (); }}