Sto programmando un semplice programma java. Devo ottenere una stringa dall'input e dividerla in due parti: 1-double 2-string. Quindi ho bisogno di fare un semplice calcolo sul doppio e inviare il risultato all'output con precisione specifica (4). Funziona bene, ma c'è un problema quando l'input è 0, quindi non funziona correttamente.Valore doppio con precisione specifica in java
Ad esempio per queste ingresso, uscita saranno:
1 kg
uscita: 2,2046
3,1 kg
uscita: 6,8343
Ma quando l'ingresso è 0, l'uscita dovrebbe essere 0.0000, ma mostra 0.0. Cosa devo fare per forzarlo a mostrare 0.0000?
ho letto post simile circa il doppio di precisione, suggeriscono qualcosa come BigDecimal
classe, ma non posso usare in questo caso, mio codice per fare questo è:
line=input.nextLine();
array=line.split(" ");
value=Double.parseDouble(array[0]);
type=array[1];
value =value*2.2046;
String s = String.format("%.4f", value);
value = Double.parseDouble(s);
System.out.print(value+" kg\n");
Prova "% 0.4f". Ciò significa "formattare un valore in virgola mobile, riempirlo di zeri finché non si hanno 4 cifre". – user268396
ho usato "% .4f", ma mostra questo errore: Eccezione nel thread "main" java.util.MissingFormatWidthException: 0.4f – MehrdadSComputer
Vedere anche http://stackoverflow.com/questions/10959424/show-only-two- digit-after-decimal ma questo non è un duplicato di quello a causa della formattazione desiderata per 0. – Raedwald