Avatar billede trophymanager Nybegynder
03. oktober 2005 - 00:14 Der er 11 kommentarer og
1 løsning

Doubles der driller

Sidder og leger lidt med tal af typen double.

Jeg har imidlertidig det problem at hvis jeg fx har et tal af typen double der er 15,3 og jeg tre gange adderer 0,1 så bliver resultatet fx 15,5999999999998 eller lign

jeg leder efter en måde at komme ud af dette, eller en måde hvorpå jeg kan runde doubles af ved et givent decimal - så ovenstående fx ville blive 15,6 - hvilket ville løse problemet også.
Avatar billede arne_v Ekspert
03. oktober 2005 - 00:15 #1
du kan udskrive resultatet med 1 decimal med:

NumberFormat fmt = new DecimalFormat("0.0");
System.out.println(fmt.format(x));
Avatar billede arne_v Ekspert
03. oktober 2005 - 00:16 #2
men der er usikkerhed på beregninger med double

hvis du vil have eksakt precision så skift til BigDecimal klassen (i java.math)
Avatar billede trophymanager Nybegynder
03. oktober 2005 - 00:21 #3
i hvilken klasse er de to?
Avatar billede arne_v Ekspert
03. oktober 2005 - 00:23 #4
de er i package java.text
Avatar billede trophymanager Nybegynder
03. oktober 2005 - 00:24 #5
hov jeg fandt det - kan jeg så formatere det til doubles?
Avatar billede arne_v Ekspert
03. oktober 2005 - 00:25 #6
format formaterer en double til en String i det angivne format
Avatar billede trophymanager Nybegynder
03. oktober 2005 - 00:26 #7
hum - ville nu gerne bevare det som double bare kun med et decimal, rundet af.
Avatar billede arne_v Ekspert
03. oktober 2005 - 00:27 #8
double opbevares ikke i 10 tals systemet men i 2 tals systemet

vil du have korrekt opførsel i 10 tals systemet så skift til BigDecimal
Avatar billede trophymanager Nybegynder
03. oktober 2005 - 00:47 #9
ah tak for det - fik endelig BigDecimal til at virke (er ikke så let at læse dokumentationen endnu) :)

Smid et svar, og gerne også hvis du ku svare mig på hvad double overhovedet kan bruges til så? Det måske fint indtil man regner med det?
Avatar billede arne_v Ekspert
03. oktober 2005 - 00:49 #10
svar
Avatar billede trophymanager Nybegynder
03. oktober 2005 - 00:50 #11
takker
Avatar billede arne_v Ekspert
03. oktober 2005 - 00:51 #12
double er fine at regne med til videnskabelig brug og mere generelt alt der er
fysiske

der er dødsstraf for at bruge double til at regne med penge

bogholdere og skattevæsen mener ikke at 15.59999 og 15.60 er det samme

men om du har 15.6 km på arbejde eller 15.59999 km på arbejde er jo det samme
(forskellen er 1 cm og usikkerheden om hvor du måler fra og til er langt større
end 1 cm)
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