Avatar billede martinsorensen Nybegynder
15. november 2006 - 16:01 Der er 7 kommentarer og
1 løsning

Kun 2 decimaler på double?

Hej alle. Sidder med et lille dumt problem jeg ikke lige selv kan hitte ud af! så håber der er en herinde der ved hvordan jeg skal gøre.

Spørgsmålet går på, hvordan jeg får forkortet mine double ned til kun 2 decimaler?

Mvh
Avatar billede winners79 Nybegynder
15. november 2006 - 16:08 #1
double tal = 1.2355678;
System.out.println((Math.round(tal*100))/100d);

eller

double tal = 1.2355678;
tal = (Math.round(tal*100))/100d;
System.out.println(tal);
Avatar billede martinsorensen Nybegynder
15. november 2006 - 16:10 #2
Super! tusind tak!
Avatar billede winners79 Nybegynder
15. november 2006 - 16:12 #3
Velbekomme :)
Avatar billede schwarz84 Nybegynder
15. november 2006 - 17:59 #4
En lille ekstra metode som ikke benytter Math.round():

double tal = 1.2355678;
System.out.println(((int)(tal*100)/100d);
Avatar billede winners79 Nybegynder
15. november 2006 - 18:24 #5
ja, men generelt ikke god tone at bruge type casting :)
Avatar billede schwarz84 Nybegynder
15. november 2006 - 20:07 #6
Nja, det er jo faktisk ikke en type casting når man 'caster' primitive typer. Der er tale om en konvertering...
Avatar billede winners79 Nybegynder
15. november 2006 - 20:48 #7
jeg vil faktisk påstå det er type casting, mon der er andre der har et svar?

http://en.wikipedia.org/wiki/Type_conversion
Avatar billede schwarz84 Nybegynder
15. november 2006 - 21:50 #8
Jeg vil påstå at det ikke er type casting i alm Java-forstand af 2 grunde:
1) Ved type casting tager man det samme object og assigner det til en variabel af en anden type. Det der foregår med primitive typer er at der laves et nyt tal som lægges på stakken. Overvej:
String s = "s";
Casting af dette til object (implicit eller explicit giver:
Object o = s;
Det er stadig det samme object, så hvis du gør sådan her:
String s2 = (String)s;
Så har du noget igen som du kan hive det oprindelig "s" ud af.

Sammenlign med:
double d = 1.2;
int i = (int)d;
Hvad sker der hvis jeg assigner i til en ny double?
double d2 = i;
Så står der ikke 1.2 i den, men derimod 1...
2) På maskinniveau er der tale om to forskellige operationer.

Men man har valgt at bruge den samme syntax...

Det er ikke noget vi skal mundhugges mere over. I øvrigt gør Math.round() det samme (men runder op hvis decimalværdien er større en ,5. Det gør min ikke, men det kan gøres ved at lægge en 0,5 til)...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester