1. Código:
import java.math.bigDecimal; import java.text.DecimalFormat; import java.text.numberFormat; formato de clase pública {doble f = 111231.5585; public void m1 () {bigDecimal bg = new BigDecimal (f); doble f1 = bg.setscale (2, bigDecimal.round_half_up) .DoubleValue (); System.out.println (F1); } / *** La conversión más conveniente de decimalFormat* / public void m2 () {decimalFormat df = new DecimalFormat ("#. 00"); System.out.println (df.format (f)); } / *** La impresión más fácil de 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. Resultado de salida:
111231.56
111231.56
111231.56
111,231.56
Aquí proporcionamos una clase de herramientas que define los métodos de operación como suma, resta, multiplicación, división y redondeo de números de punto flotante. Como referencia.
Archivo de origen Mathextend.java:
import java.math.bigDecimal; public class Mathextend {// División predeterminada Precisión de operación privada estática Final intfairt_div_scale = 10; /*** Proporciona una operación de adición precisa. * @param v1 * @param v2 * @return la suma de dos parámetros */ public static double add (double v1, double v2) {bigDecimal b1 = new BigDecimal (double.ToString (v1)); BigDecimal B2 = new BigDecimal (doble.ToString (V2)); return b1.add (b2) .DoubleValue (); } / ** * Proporcione operaciones de adición precisas * @param v1 * @param v2 * @return La suma matemática de dos parámetros, volviendo en formato de cadena * / public static string add (String v1, string v2) {bigDecimal b1 = new BigDecimal (v1); BigDecimal B2 = new BigDecimal (V2); return b1.add (b2) .ToString (); } /*** proporciona operaciones de sustracción precisas. * @param v1 * @param v2 * @return La diferencia entre dos parámetros */ public static double rest (doble v1, doble v2) {bigDecimal b1 = new BigDecimal (double.ToString (v1)); BigDecimal B2 = new BigDecimal (doble.ToString (V2)); return b1.subtract (B2) .DoubleValue (); } / ** * Proporcione una operación de sustracción precisa * @param v1 * @param v2 * @return la diferencia matemática entre dos parámetros, devuelve en formato de cadena * / public static string sutract (string v1, string v2) {bigDecimal b1 = new BigDecimal (v1); BigDecimal B2 = new BigDecimal (V2); return b1.subtract (b2) .ToString (); } /*** proporciona operaciones de multiplicación precisas. * @param v1 * @param v2 * @return producto de dos parámetros */ public static double multiply (doble v1, doble v2) {bigDecimal b1 = new BigDecimal (double.ToString (v1)); BigDecimal B2 = new BigDecimal (doble.ToString (V2)); return b1.multiply (b2) .DoubleValue (); } / ** * Proporcione una operación de multiplicación precisa * @param v1 * @param v2 * @return El producto matemático de dos parámetros, devuelve en formato de cadena * / public static string multiply (String v1, string v2) {bigDecimal b1 = new BigDecimal (v1); BigDecimal B2 = new BigDecimal (V2); return b1.multiply (b2) .ToString (); } /*** Proporciona (relativamente) operación de división precisa. Cuando no hay una situación de división, es precisa a * 10 dígitos después del punto decimal, y los números posteriores se redondean, y el modo de redondeo usa Round_half_even * @param v1 * @param v2 * @return el cociente de los dos parámetros */ public static Double divide (doble v1, doble v2) {return divide (v1, v2, predeterminado de los dos parámetros */ public static divide (doble v1, doble v2) {return divide (v1, v2, predeterminado de los dos parámetros */ public static divide (doble v1, doble v2) {return Divide (v1, v2, predeterminado, predeterminado); } /*** Proporciona (relativamente) operación de división precisa. Cuando no hay fin para completar la situación, el parámetro de escala se refiere a la precisión de *, y los números posteriores están redondeados. El modo de redondeo utiliza Round_half_even * @param v1 * @param v2 * @param escala para indicar que debe ser preciso en varios lugares decimales. * @return cociente de dos parámetros*/ public static Double Divide (doble v1, doble v2, int escala) {Divide Divide (V1, V2, escala, bigDecimal.round_half_even); } /*** Proporciona (relativamente) operación de división precisa. Cuando no hay fin para completar la situación, el parámetro de escala se refiere a la precisión de *, y los números posteriores están redondeados. El modo de redondeo utiliza el modo de redondeo especificado por el usuario* @param v1* @param v2* @param escala significa que debe ser preciso a varios dígitos después del punto decimal* @param round_mode significa modo de redondeo especificado por el usuario* @return cuociente de dos parámetros*/ public static divide (doble v1, doble v2, int redonde IlegalargumentException ("La escala debe ser un entero o cero positivo"); } BigDecimal b1 = new BigDecimal (double.ToString (v1)); BigDecimal B2 = new BigDecimal (doble.ToString (V2)); return b1.divide (b2, escala, ronda_mode) .DoubleValue (); } / ** * Proporciona (relativamente) una operación de división precisa, cuando hay una división interminable, es preciso a * 10 dígitos después del punto decimal, y los números posteriores se redondean, y el modo de redondeo usa Round_half_even * @param v1 * @param v2 * @return la cotilina de los dos parámetros, regresa en la cadena format * / public static Dividge (string v1, statur divide (v1, v2, default_div_scale); } /*** Proporciona operaciones de división (relativamente) precisas. Cuando no hay fin para completar la situación, el parámetro de escala se refiere a la precisión de *, y los números posteriores están redondeados. El modo de redondeo utiliza ronda_half_even * @param v1 * @param v2 * @param escala representa el cociente de los dos parámetros que deben ser precisos para el punto decimal * @return el cociente de los dos parámetros, devolviendo */ public static string divide (string v1, string v2, int BigDecimal.round_half_even); } /*** Proporciona (relativamente) operación de división precisa. Cuando no hay fin para completar la situación, el parámetro de escala se refiere a la precisión de *, y los números posteriores están redondeados. Rounding mode uses the user-specified rounding mode* @param v1 * @param v2 * @param scale means that the number of digits after the decimal point needs to be accurate to the decimal point* @param round_mode means the user-specified rounding mode* @return The quotient of the two parameters, returned in string format */ public static String divide(String v1, String v2, int scale, int round_mode) { if (escala <0) {tirar nueva ilegalargumentException ("la escala debe ser un entero o cero positivo"); } BigDecimal b1 = new BigDecimal (V1); BigDecimal B2 = new BigDecimal (V2); return b1.divide (b2, escala, ronda_mode) .ToString (); } / *** Proporciona un redondeo preciso de los lugares decimales, y el modo de redondeo utiliza Round_half_even* @param V números que deben ser redondeados* @param escala varios dígitos retenidos después del lugar decimal* @return resultados después de redondear* / public static double (double v, int escala) {return round (v, escala, bigdecimal.round_half_eveneven); } /** * 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 or cero"); } BigDecimal b = new BigDecimal (double.ToString (v)); return B.SetScale (escala, ronda_mode) .DoubleValue (); } / ** * Proporciona un redondeo preciso de los lugares decimales, el modo de redondeo utiliza Round_half_even * @param V números que deben ser redondeados * @param escala cuántos dígitos se conservan después del lugar decimal * @return el resultado después de la redondeo se devuelve en el formato de cadena * / public string string ronda (string v, int escala) {return Round (V, bigDecimal.Reunds se devuelve en el formato de cadena * / public String Round (String v, int escala) {return Round (V, bigDecimal. } / *** Proporciona un redondeo preciso de los lugares decimales* @param V números que deben redondear* @param escala cuántos dígitos se retienen después del lugar decimal* @param redonde_mode especificado redondeando* @return el resultado después de la redondeo se devuelve en el formato de cadena* / public static string Round (String v, int escala, int round_mode) {if (if (if <0) {Show {Illegal de string Illegement (String V, scre ser un entero o cero positivo "); } BigDecimal b = new BigDecimal (V); return B.SetScale (escala, ronda_mode) .ToString (); }}