Een Single of een Double ook, alleen die doet dat met macht 2.
Getallen met een maximale precisie van .0000000000000000000000000001 kunnen zonder verlies in precisie worden opgeslagen, en vergeleken.
Da's ten eerste niet waar, ook de Decimal is een
floating point getal. De precisie geldt alleen voor getallen kleier dan 2
96 / 10
28. Voor het maximale getal van een Decimal, 2
95-1, is er helemaal geen ruimte meer voor decimalen achter de komma.
Ten tweede is dit bij een Single of Double niet anders, alleen moet je dan denken in machten van 2 ipv machten van 10.
Met een decimal is er minder kans op afrondingsfouten
Alleen als je het hebt over decimale invoer. Als we zouden werken in basis-2 dan geldt juist precies het tegenovergestelde.
Decimal is echt geen heilige graal ofzo, je loopt zo tegen een afrondingsfout aan als je wat meer gaat doen dan alleen optellen, aftrekken en vermenigvuldigen. De voordelen zijn voornamelijk grotere precisie (96 mantissa bits ipv 53 bij een double) en basis-10 waardoor human input vrijwel altijd exact te representeren is. De nadelen zijn meer geheugen en (substantieel) slechtere performance. Geen afrondigsfouten is dus geen voordeel, want dat is simpelweg gewoon niet het geval.
Als je zonder precisieverlies wilt kunnen delen dan kun je het beste werken met rationele getallen, en dan doet het er eigenlijk niet meer toe of je Decimal of Single/Double gebruikt, want dan sla je 1.04 gewoon op als 104/100. Maar het zijn uitspraken zoals die van jou dat mensen gaan denken dat Decimal de oplossing is bij het hebben van afrondingsfouten, wat echt nergens op slaat.
[
Voor 29% gewijzigd door
.oisyn op 05-10-2012 17:26
]