jodeman zei:
Ok, dan volgende vraag, waarom Java wel en al de rest van de programmeertalen (die ik ken) niet?
logisch zou zijn -> double dat correct afrond, klasse voor floating point
onmogelijk, floating point is gemaakt om oa "reële" getallen op te slaan, het probleem van deze is dat deze onaftelbaar zijn en dus ONMOGELIJK vast te leggen zijn met eindig computergeheugen, hoe je ook probeert.
Daarnaast is floating-point ook zeer handig om vreselijk grote (of juist vreselijk kleine) getallen op te slaan, met natuurlijk het bijkomende verlies van exactie. Voor slechts 64bit heeft een floating-point getal een vrij "extreme" reikwijdte, de 128-bit versies zijn voor zowat alle normale toepassingen (niet-wetenschappelijke) meer dan voldoende. (floating-point is gebaseerd op de wetenschappelijke notatie van getallen, maar dan in het 2-tallig talstelsel ipv het 10-tallig).
Rationale getallen kan je in principe wel opslaan met "eindig" geheugen, door b.v. gewoon 2 (big)ints te nemen (1 voor teller, 1 voor noemer).
Een getal als 0,33333 kan je b.v. in principe gewoon opslaan als het koppel (1,3) of dus de breuk 1/3.
Het getal Pi echter kan je onmogelijk exact opslaan (en kent ook niemand

).
Let op: met eindig geheugen bedoel ik niet dat er een eindig geheugen bestaat dat
alle rationale getallen kan voorstellen. Je kan echter wel, in principe, voor elk rationaal getal dat je tegenkomt een geheugen creëren om het exact op te slaan. Dit zal echter voor bepaalde kommagetallen immens groot zijn.
Als je zuivere exactie wilt voor rationale getallen raad ik je aan om een dergelijk systeem te implementeren of, wat vrij analoog is, een fixed-point systeem maken, maar dat is dan weer niet handig voor oneindig lange rationale getallen zoals 1/3, wel om b.v. het getal 23495,2523 op te slaan (de eerste 16 bits b.v. voor waarden -32768 ->32767, de laatste 16 bits voor een kommagetal tot 4 cijfers lang).
Nog een andere manier voor "exacter" kommagetallen is eigenlijk het floating point te verbeteren, waar je een deel van je getal als een gewoon getal zal opslaan (geheel getal!) en dan daarbij een macht van 10 (of 2 als je bitsgewijs werkt) waarmee je moet vermenigvuldigen (of door moet delen).
edit: de nadelen aan zo een eigen systeem:
-Het is groot, voor ietwat deftige exactie heb je al snel vrij veel bits nodig.
-Het is niet universeel
-de berekeningen worden op programmatorisch niveau geïmplementeerd, met behulp van bestaande processorinstructies, ze worden niet op een (sneller!) chip-niveau gecreëerd, wat dus meestal resulteert in een tragere rekenset (hoewel dit natuurlijk afhangt van de exactie die je wilt bereiken).