Pokud je hodnota 200.3456
, měla by být zformátována na 200.34
.
Pokud je to 200
, pak by to mělo být 200.00
.
Pokud chcete vypsat pouze double
se dvěma číslicemi za desetinnou čárkou, použijte něco takového:
double value = 200.3456;
System.out.printf("Value: %.2f", value);
Pokud chcete výsledek místo vypsání na konzoli zobrazit jako řetězec
, použijte Řetězec.format()
se stejnými argumenty:
String result = String.format("%.2f", value);
Nebo použijte třídu DecimalFormat
:
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
Nejjednodušší by bylo provést tento trik;
double val = ....;
val = val*100;
val = Math.round(val);
val = val /100;
pokud val začíná na 200,3456, pak se dostane na 20034,56, pak se zaokrouhlí na 20035 a pak ho vydělíme a dostaneme 200,34.
pokud bychom chtěli zaokrouhlovat vždy dolů, mohli bychom vždy zkrátit odlitím na int:
double val = ....;
val = val*100;
val = (double)((int) val);
val = val /100;
Tato technika bude fungovat ve většině případů, protože u velmi velkých dvojčat (kladných nebo záporných) může dojít k přetečení. ale pokud víte, že vaše hodnoty budou ve vhodném rozsahu, pak by vám to mělo vyhovovat.
Zaokrouhlení dvojnásobku obvykle není to, co člověk chce. Místo toho použijte String.format()
pro vyjádření v požadovaném formátu.