Creando 0.000 .. con ciertos decimales

Estoy tratando de crear el número 0.00000 .... con tantos '0' como quiera la entrada del usuario. ¿Qué hay de malo con mi código a continuación?

      int n;
      double dec = 0.0;

   in = new Scanner(System.in);
        n = in.nextInt();

    for (i = 1; i <= n; i++) 
                dec = dec / 10.0d;

El número no cambia.

Respuesta 1

Esperas doubleretener el número de dígitos decimales, no hace eso. El valor siempre está normalizado. El doubletipo tiene que ver con la magnitud de un número, no con una representación decimal particular. Es adecuado para cantidades naturales: pesos, alturas, etc.

Si le importan los dígitos decimales, entonces BigDecimales un tipo más adecuado para usted. Esto es más apropiado para valores de moneda, por ejemplo, donde realmente hay una cantidad precisa especificada como una representación decimal.

BigDecimal no retener el número de dígitos decimales que utiliza, pero tendrá que tener cuidado con exactamente cómo lo usa. Sin duda encontrará el setScalemétodo útil.

Por ejemplo:

import java.math.BigDecimal;

class Test {
    public static void main(String[] args) throws Exception {
        BigDecimal x = new BigDecimal("0")
        System.out.println(x); // 0
        x = x.setScale(5);
        System.out.println(x); // 0.00000
    }
}
Respuesta: 2

Si solo desea mostrar el punto decimal según la entrada del usuario, intente

int n;
double dec = 0.0;

in = new Scanner(System.in);
n = in.nextInt(); //number of decimal places

System.out.println(String.format("%."+n+"f",dec));
Respuesta: 3

0.0, 0.00, 0.0000000000000000000000000000000000000000000000Y así sucesivamente son exactamente el mismo valor; Java literalmente no puede distinguirlos durante el tiempo de ejecución. No importa cuántas veces lo divida 10, seguirá siendo EXACTAMENTE el mismo número.

Cuando se imprime, se omiten los cero dígitos finales (a menos que se especifique explícitamente en, por ejemplo String.format).

Respuesta: 4

Básicamente, lo que estás tratando de hacer es seguir dividiéndote 0.0. Pero siempre te dará el mismo resultado que en Java considera 0.000como 0.0. Incluso 0.0000000000000000será considerado como 0.0. Si solo desea mostrar esa cantidad de 0s, guárdelo en Stringay luego visualícelo.

...
StringBuilder s = new StringBuilder("0.");
for(int i = 1; i < n; i++)
    s.append("0");
String num = s.toString();
//Then use it.
Respuesta: 5

Estoy usando Spring con JPA (Hibernate). Como estaba aprendiendo de muchos sitios sobre relaciones (hay pocas formas de implementar cada uno de ellos) también se habló sobre buscar tipos, pero la pregunta I ...

Actualmente estoy escribiendo una clase que crea múltiples manos que contienen objetos de tarjeta usando arrayLists. Estoy tratando de escribir un método que busque una lista de matrices (mano) y devuelva el par más grande de ...

Estoy tratando de hacer un clon de AsyncTask de Android para usar en una aplicación JavaFX. Aquí está el código que se me ocurrió: import java.util.concurrent.Executor; import java.util.concurrent.Executors; resumen ...

¿Cómo convierto la siguiente cadena en un objeto persona? Contenido de la cadena: String testString = "John | 23; Ron | 22; Don | 32" Clase de persona: clase pública Persona {nombre de cadena privada; Cadena privada ...