En Java, cuando usamos un tipo de datos doble antes de una variable, representa 15 dígitos después del punto decimal. Pero a veces solo requerimos dos lugares decimales después de los puntos decimales, como para representar rupias y otras unidades. Entonces, en esta sección, vamos a discutir el formas de mostrar el doble hasta dos decimales junto con un ejemplo adecuado y programas Java.
Java proporciona las siguientes tres formas de mostrar el doble con 2 decimales:
- Usando formato decimal ('0.00')
- Usando el método String.format() ('%.2f')
- Usando BigDecimal
Analicemos las formas anteriores una por una.
parámetros predeterminados de java
Usando formato decimal
Java Formato decimal es una subclase concreta de la clase NumberFormat que se utiliza para formatear los números decimales. la clase proporciona la establecerModoRedondeo() Método para mostrar un número doble con hasta dos decimales.
Sintaxis:
public void setRoundingMode(RoundingMode roundingMode)
Acepta el modo de redondeo como parámetro y anula el método setRoundingMode() del Formato numérico clase. arroja Excepción de puntero nulo si no especificamos ningún modo de redondeo. La siguiente tabla describe los diferentes modos de redondeo.
Poner número | ARRIBA | ABAJO | TECHO | PISO | HALF_UP | HALF_DOWN | MITAD_PAR | INNECESARIO |
---|---|---|---|---|---|---|---|---|
5.5 | 6 | 5 | 6 | 5 | 6 | 5 | 6 | lanzar excepción aritmética |
2.5 | 3 | 2 | 3 | 2 | 3 | 2 | 2 | lanzar excepción aritmética |
1.6 | 2 | 1 | 2 | 1 | 2 | 2 | 2 | lanzar excepción aritmética |
1.1 | 2 | 1 | 2 | 1 | 1 | 1 | 1 | lanzar excepción aritmética |
1.0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
-1.0 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
-1.1 | -2 | -1 | -1 | -2 | -1 | -1 | -1 | lanzar excepción aritmética |
-1.6 | -2 | -1 | -1 | -2 | -2 | -2 | -2 | lanzar excepción aritmética |
-2.5 | -3 | -2 | -2 | -3 | -3 | -2 | -2 | lanzar excepción aritmética |
-5.5 | -6 | -5 | -5 | -6 | -6 | -5 | -6 | lanzar excepción aritmética |
Hemos utilizado otro método de la clase DecimalFormat que es el formato() método. Formatea una cadena para producir una cadena.
Sintaxis:
public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition)
El método acepta tres parámetros: número, resultado y posición. Pero los dos últimos parámetros son opcionales. Devuelve la cadena numérica formateada. El método arroja Excepción aritmética si Modo de redondeo se establece en INNECESARIO.
TwoDecimalPlace1.java
import java.math.RoundingMode; import java.text.DecimalFormat; public class TwoDecimalPlace1 { //constructor of the DecimalFormat class private static final DecimalFormat decfor = new DecimalFormat('0.00'); public static void main(String args[]) { //defining a number of type double double num = 123.9876543567; System.out.println('Double Number: ' + num); System.out.println('Double Number: ' + decfor.format(num)); //123.99 //DecimalFormat, default is RoundingMode.HALF_EVEN decfor.setRoundingMode(RoundingMode.DOWN); System.out.println(' Before Rounding: ' + decfor.format(num)); //123.98 decfor.setRoundingMode(RoundingMode.UP); System.out.println('After Rounding Up: ' + decfor.format(num)); //123.99 } }
Producción:
Double Number: 123.9876543567 Double Number: 123.99 Before Rounding: 123.98 After Rounding Up: 123.99
Usando el método String.format()
Java también proporciona el método format() para formatear el número. Pertenece a la clase String. Al utilizar el método, se puede formatear cualquier número y cadena en consecuencia.
Para alterar el número hasta dos decimales, utilizamos %.2f para formatear el número. Tenga en cuenta que no podemos redondear el número en el método String.format(), siempre redondeando a la mitad.
bash divide la cadena por delimitador
Sintaxis:
public static String format(String format, Object... args)
El método acepta los dos parámetros siguientes:
la rueda de desplazamiento no funciona
formato: Es una cadena formateada que queremos.
argumentos: Estos son los argumentos a los que hacen referencia los especificadores de formato en la cadena de formato.
Devuelve la cadena formateada. arroja Excepción de formato ilegal si la cadena de formato contiene sintaxis ilegal. tambien tira Excepción de puntero nulo si especificamos el formato como nulo.
TwoDecimalPlace2.java
public class TwoDecimalPlace2 { public static void main(String args[]) { //defining a number of type double double num = 10.98765432167; System.out.println('Double Number: ' + num); //use either of the following two statements for two decimal places both gives the same result System.out.println('Double Number: ' + String.format('%.2f', num)); System.out.format('Double Number: %.2f', num); } }
Producción:
Double Number: 10.98765432167 Double Number: 10.99 Double Number: 10.99
Usando BigDecimal
También podemos usar la clase Java BigDecimal para mostrar un número con hasta dos decimales. Pertenece a java.math.BigDecimal paquete. Extiende la clase Número e implementa la Comparable interfaz.
La clase proporciona el método setScale(). La sintaxis es la siguiente:
Sintaxis:
setScale(int newScale, RoundingMode roundingMode)
El método acepta dos parámetros:
nuevaEscala: La escala del valor BigDecimal que se devolverá.
año en que se inventó la computadora
Modo de redondeo: El modo de redondeo que queremos aplicar.
Devuelve el BigDecimal cuya escala es el valor especificado y cuyo valor sin escala se determina multiplicando o dividiendo el valor sin escala de este BigDecimal por la potencia de diez adecuada para mantener su valor general.
El método arroja el Excepción aritmética si Modo de redondeo se establece en INNECESARIO . RoundingMode es una enumeración que proporciona el RoundingMode discutido anteriormente.
Otro método que hemos utilizado en este programa es BigDecimal.doubleValue(). Convierte BigDecimal en un doble número. Veamos un ejemplo.
TwoDecimalPlace3.java
import java.math.BigDecimal; import java.math.RoundingMode; public class TwoDecimalPlace3 { public static void main(String args[]) { //defining a number of type double double num = 12.4565652239; System.out.println('Double Number: ' + num); BigDecimal bd = new BigDecimal(num).setScale(2, RoundingMode.HALF_UP); double newNum = bd.doubleValue(); System.out.println('Up to two decimal places: ' + newNum); } }
Producción:
Double Number: 12.4565652239 Up to two decimal places: 12.46