1. Código:
importar java.math.bigdecimal; importar java.text.decimalformat; importar java.text.numberFormat; public class format {duplo f = 111231.5585; public void m1 () {bigdecimal bg = novo bigdecimal (f); duplo f1 = bg.setscale (2, bigdecimal.round_half_up) .doubleValue (); System.out.println (F1); } / *** A conversão mais conveniente de decimalformat* / public void m2 () {decimalformat df = new DecimalFormat ("#. 00"); System.out.println (df.format (f)); } / *** A impressão mais 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) {formato f = new Format (); f.m1 (); f.m2 (); f.m3 (); f.m4 (); }}2. Resultado da saída:
111231.56
111231.56
111231.56
111.231.56
Aqui, fornecemos uma classe de ferramentas que define os métodos de operação, como adição, subtração, multiplicação, divisão e arredondamento de números de ponto flutuante. Para referência.
Arquivo de origem MathExtend.java:
importar java.math.bigdecimal; classe pública MathExtend {// Divisão padrão Operação precisão private estático final int default_div_scale = 10; /*** fornece operação de adição precisa. * @param v1 * @param v2 * @return A soma de dois parâmetros */ public static duplo add (duplo v1, duplo v2) {bigdecimal b1 = novo bigdecimal (duplo.tostring (v1)); Bigdecimal b2 = novo bigdecimal (duplo.toString (v2)); return b1.add (b2) .doubleValue (); } / ** * Forneça operações de adição precisas * @param v1 * @param v2 * @return a soma matemática de dois parâmetros, retornando no formato da string * / public static string add (string v1, string v2) {bigdecimal b1 = novo bigdecimal (v1); Bigdecimal b2 = novo bigdecimal (v2); return b1.add (b2) .ToString (); } /*** fornece operações de subtração precisas. * @param v1 * @param v2 * @return a diferença entre dois parâmetros */ public static duplo subtração (dupla v1, dupla v2) {bigdecimal b1 = new bigdecimal (duplo.toString (v1)); Bigdecimal b2 = novo bigdecimal (duplo.toString (v2)); Retornar B1.Subtract (B2) .DoubleValue (); } / ** * Forneça operação de subtração precisa * @param v1 * @param v2 * @returnar a diferença matemática entre dois parâmetros, retorna no formato de string * / public static string subtraindo (string v1, string v2) {bigdecimal b1 = novo bigdecimal (v1); Bigdecimal b2 = novo bigdecimal (v2); Retornar B1.Subtract (B2) .ToString (); } /*** fornece operações de multiplicação precisas. * @param v1 * @param v2 * @return Produto de dois parâmetros */ public static duplo multiplique (v1 duplo, duplo v2) {bigdecimal b1 = novo bigdecimal (duplo.tostring (v1)); Bigdecimal b2 = novo bigdecimal (duplo.toString (v2)); return b1.multiply (b2) .doubleValue (); } / ** * Forneça operação de multiplicação precisa * @param v1 * @param v2 * @return o produto matemático de dois parâmetros, retorna no formato de string * / public static string multiplique (string v1, string v2) {bigdecimal b1 = novo bigdecimal (v1); Bigdecimal b2 = novo bigdecimal (v2); return b1.multiply (b2) .toString (); } /*** fornece (relativamente) operação de divisão precisa. Quando não há situação de divisão, é preciso para * 10 dígitos após o ponto decimal, e os números subsequentes são arredondados, e o modo de arredondamento usa RODO_HALF_EVEL * @param v1 * @param v2 * @return o quociente dos dois parâmetros */ public static Divide (Double v1, duplo v2) {Return v1) } /*** fornece (relativamente) operação de divisão precisa. Quando não há fim para concluir a situação, o parâmetro de escala refere -se à precisão de *e os números subsequentes são arredondados. O modo de arredondamento usa Round_Half_Even * @param v1 * @param v2 * @param escala para indicar que precisa ser preciso para vários locais decimais. * @return quociente de dois parâmetros*/ public static duplo divide (v1 duplo, v2 duplo, int) {return divide (v1, v2, escala, bigdecimal.round_half_even); } /*** fornece (relativamente) operação de divisão precisa. Quando não há fim para concluir a situação, o parâmetro de escala refere -se à precisão de *e os números subsequentes são arredondados. O modo de arredondamento usa o modo de arredondamento especificado pelo usuário* @param v1* @param v2* @param escala significa que você precisa ser preciso para vários dígitos após o ponto decimal* @param redond_mode significa que o modo de reversão especificado pelo usuário* @Return Quotient de dois parâmetros*/ public static duplo (duplo v1, duplo v2, escala, int, escala, INT, INT, INT. IlegalargumentException ("A escala deve ser um número inteiro positivo ou zero"); } Bigdecimal b1 = novo bigdecimal (duplo.toString (v1)); Bigdecimal b2 = novo bigdecimal (duplo.toString (v2)); retornar B1.divida (B2, escala, RODO_MODE) .DOUBLEVALUE (); } / ** * fornece (relativamente) operação de divisão precisa, quando há uma divisão sem fim, é precisa para * 10 dígitos após o ponto decimal, e os números subsequentes são arredondados e o modo de arredondamento usa Round_Half_Even * @param v1 * @param v2 * @return o quotiente dos dois parameters, retorna em format * divide (v1, v2, default_div_scale); } /*** fornece operações de divisão (relativamente) precisas. Quando não há fim para concluir a situação, o parâmetro de escala refere -se à precisão de *e os números subsequentes são arredondados. O modo de arredondamento usa RODOD_HALF_EVEL * @PARAM V1 * @param v2 * @param A escala representa o quociente dos dois parâmetros que precisam ser precisos para o ponto decimal * @return o quociente dos dois parâmetros, retorno, divide */ public static string (string v1, string v2, int) {retorno BigDecimal.Round_Half_Even); } /*** fornece (relativamente) operação de divisão precisa. Quando não há fim para concluir a situação, o parâmetro de escala refere -se à precisão de *e os números subsequentes são arredondados. 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) {jogue novo ilegalArgumentException ("A escala deve ser um número inteiro positivo ou zero"); } Bigdecimal b1 = novo bigdecimal (v1); Bigdecimal b2 = novo bigdecimal (v2); retornar b1.divida (b2, escala, redond_mode) .toString (); } / *** fornece arredondamento preciso de lugares decimais, e o modo de arredondamento usa Round_Half_Even* @param v números que precisam ser arredondados* @param escala Vários dígitos retidos após o lugar decimal* @return Resultados após arredondamento* / public static duplo (Double V, int) {Return Round (V, escala, BigDecimal. } /** * 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 zero "); } BigDecimal b = novo bigdecimal (duplo.toString (v)); Retornar B.SetScale (Scale, Round_mode) .DoubleValue (); } / ** * fornece arredondamento preciso de lugares decimais, o modo de arredondamento usa RODOD_HALF_EVEL * @PARAM V Números que precisam ser arredondados * @param escala quantos dígitos são retidos após a decimal local * @return o resultado após o arredondamento, v, scale, v, string, string de string), e o rendimento da string); } /** * Provides accurate rounding of decimal places* @param v Numbers that need to be rounded* @param scale How many digits are retained after the decimal place * @param round_mode Specified rounding* @return The result after rounding is returned in string format */ public static String round(String v, int scale, int round_mode) { if(scale<0) { throw new IllegalArgumentException("The scale must ser um número inteiro positivo ou zero "); } BigDecimal b = novo bigdecimal (v); Retornar B.SetScale (Scale, Round_mode) .ToString (); }}