3*10,55

Status
Niet open voor verdere reacties.

fly3rbug

Gebruiker
Lid geworden
10 apr 2007
Berichten
31
3*10,55 java kan niet rekenen

Ok ik heb een reken scriptje gemaakt die product prijsen bij elkaar optelt en verstuurt naar een database.

maar als ik bv 3 x productA van 10.55 wil uitrekenen dan krijg ik een heel vaag andwoord.
Dus 3*10.55 = 31.65
maar java zecht dat dit 31.6500000...002 is.

wat ik gedaan heb om het op te lossen is

double prijs = 10.55*3; //uitkomst 31.65000..02
int temp = prijs * 100; //uitkomst 3165
prijs = temp / 100; //uitkomst 31.65

Ikzelf vind dit erg lompe en lelijke code

Weet iemand misschien waarom dit gebeurt en hoe dit beter op te lossen is of is mijn oplossing al de goede?
 
Laatst bewerkt:
Waarom maak je geen gebruik van de functie round();?

Code:
float prijs = round(10.55*3);
Wel even de library java.lang.Math invoegen.
 
Het double type kan dit soort hele kleine afwijkingen vertonen en dat is zo in zo goed als alle programmeertalen. Dit komt doordat een computer binair rekent en decimalen van een getal (uit het tientallig stelsel dat we in het dagelijks leven gebruiken) daarin niet goed zijn weer te geven.

Jouw oplossing werkt natuurlijk wel, maar je zou ook eens kunnen kijken naar de DecimalFormat class: http://java.sun.com/javase/6/docs/api/java/text/DecimalFormat.html.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan