Toon posts:

[java]lange doubles

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb dus dit:
String sbedrag = InVoer.getText();
Double aObj = Double.valueOf(sbedrag);
double a = aObj.doubleValue();
double r = a / 100;
String sr = String.valueOf(r);
g.drawString("Bedrag is: " + sr,12,130);
als ik bijvoorbeeld 150.5 invoer dan krijg ik als uitkomst dus 1.5050000000000001

als ik 123.4 invoer krijg ik wel een mooi getal 1.234

wat is dit? wat kan ik hieraan doen/aanpassen

alvast bedankt

  • nxt
  • Registratie: November 2001
  • Laatst online: 26-08 13:51

nxt

dat is toch vrij logisch?

je voert 150.5 in
deelt dit door 100
en daar komt dan inderdaad 1.505 uit

edit: sorry, ik heb niet helemaal goed gelezen
probeer eens te delen door 100d in plaats van 100
(dus een d achter het getal)

Verwijderd

Topicstarter
double r = a / 100d; dus?

nee dat werkt helaas niet, thx anyway

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 09-09 11:02
Bekend probleem met floating point berekeningen.

Ik heb er nog niet echt over nagedacht, maar aangezien 10 == 5 * 2 en 5 is priem ten op zichte van 2, zal 1/5 waarschijnlijk het kleinste getal zijn dat niet met een eindig aantal cijfers in het binaire stelsel uit te drukken is. Of maak ik hier een vergissing?

De meest gebruikelijke remedie is het invoeren van een kleine tolerantie bij het vergelijken van getallen en het afkappen van getallen voor het weergeven (waarmee je trouwens niet alle van dit soort problemen oplost).

  • nxt
  • Registratie: November 2001
  • Laatst online: 26-08 13:51

nxt

wat voor jdk versie gebruik je?
ik kan het probleem hier niet reproduceren met jdk 1.3.1
en jdk 1.4.0

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 06:33
Op woensdag 24 april 2002 21:23 schreef Soultaker het volgende:
Bekend probleem met floating point berekeningen.

Ik heb er nog niet echt over nagedacht, maar aangezien 10 == 5 * 2 en 5 is priem ten op zichte van 2, zal 1/5 waarschijnlijk het kleinste getal zijn dat niet met een eindig aantal cijfers in het binaire stelsel uit te drukken is. Of maak ik hier een vergissing?

De meest gebruikelijke remedie is het invoeren van een kleine tolerantie bij het vergelijken van getallen en het afkappen van getallen voor het weergeven (waarmee je trouwens niet alle van dit soort problemen oplost).
Klopt helemaal.

Verwijderd

Topicstarter
ik heb jdk 1.1.3

  • nxt
  • Registratie: November 2001
  • Laatst online: 26-08 13:51

nxt

1.1.3 is wel erg oud,
ik kan natuurlijk alleen maar gokken, maar misschien dat er in die versie een bugje zat?

in ieder geval kan ik je zowiezo aanraden te upgraden naar java2 (dus 1.3 of 1.4) dan heb je wat meer classes tot je beschikking en ik vind het ook wel sneller.
Pagina: 1