code:
1
2
3
| Dim d As Double d = 1 - 0.9 MsgBox d - 0.1 |
Daar komt bij mij dus -2.77555756156289E-17 uit. Eh???
1
2
3
| Dim d As Double d = 1 - 0.9 MsgBox d - 0.1 |
Why BigDecimal: Computer systems must provide an arithmetic that gives the results that people expect. This is not available in Java today; a decimal floating point arithmetic is needed -- one which gives the same results as the arithmetic that people learn at school.
Why IBM is offering this trial version: IBM is looking for your evaluation and feedback on this technology. We want to know that this works for you and is, in fact, useful. If so, we will use your input through www.alphaworks.ibm.com/forums in our proposals to make this extension of Java commercially available to developers.
How it works: The BigDecimal class provides immutable arbitrary-precision decimal numbers. The methods of the BigDecimal class provide operations for fixed and floating point arithmetic, comparison, format conversions, and hashing. As the numbers are decimal, there is an exact correspondence between an instance of a BigDecimal object and its String representation; the BigDecimal class provides direct conversions to and from String and character array objects, and well as conversions to and from the Java primitive types (which may not be exact) and BigInteger. The internal representation of a decimal number is neither defined nor exposed, and is not permitted to affect the result of any operation. Operations on BigDecimal numbers are controlled by a MathContext object, which provides precision and other information. Default settings are used if no MathContext object is provided.
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
Ach, als je afrondt op 14 cijfers achter de komma is het afgeronde getal nog steeds 0Op dinsdag 25 september 2001 14:56 schreef TlighT het volgende:
code:
1 2 3 Dim d As Double d = 1 - 0.9 MsgBox d - 0.1
Daar komt bij mij dus -2.77555756156289E-17 uit. Eh???
There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -
Verwijderd
Hmm.. eens effies denken. Dat heb ik nog ooit opgevangen tussen het slapen door in een collegeOp dinsdag 25 september 2001 14:56 schreef TlighT het volgende:
code:
1 2 3 Dim d As Double d = 1 - 0.9 MsgBox d - 0.1
Daar komt bij mij dus -2.77555756156289E-17 uit. Eh???
1
| d = 1.0 - 0.9 |
1
| (float) d = 1.0 - 0.9 |
kijk eens hoe dicht dit getal bij 0 ligt?Op dinsdag 25 september 2001 14:56 schreef TlighT het volgende:
code:
1 2 3 Dim d As Double d = 1 - 0.9 MsgBox d - 0.1
Daar komt bij mij dus -2.77555756156289E-17 uit. Eh???
Doet iets met Cloud (MS/IBM)
Ja, dom natuurlijk...Op dinsdag 25 september 2001 15:10 schreef mbravenboer het volgende:
Welkom in de wereld van de floating point berekeningen.
Vrijwel alle programmeertalen gebruiken een niet decimale methode om floating point berekeningen te doen. Deze berekeningen zijn niet geheel exact omdat ze simpelweg niet exact gerepresenteerd kunnen worden op deze manier. Er zijn meestal aparte faciliteiten voor berekeningen die wel een hoge precisie nodig hebben. Wat dat voor VB is weet ik echter niet...
Stukje info van IBM over een Java implementatie:
1
| if (abs(d2-d1) < DBL_EPSILON) { blaat; } |
floating point wordt gewoon door de cpu gedaan, en is dus niet programmeertaal afhankelijk. Tenzij je natuurlijk een soort van emulatie gebruikt, maar dat is hier niet ter sprake (of tenzij hier iemand nog op een 486 sx of langzamer code, maar dat kan ik me nauwelijks voorstellenOp dinsdag 25 september 2001 15:10 schreef mbravenboer het volgende:
Welkom in de wereld van de floating point berekeningen.
Vrijwel alle programmeertalen gebruiken een niet decimale methode om floating point berekeningen te doen. Deze berekeningen zijn niet geheel exact omdat ze simpelweg niet exact gerepresenteerd kunnen worden op deze manier. Er zijn meestal aparte faciliteiten voor berekeningen die wel een hoge precisie nodig hebben. Wat dat voor VB is weet ik echter niet...
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Volgens mij wel afhankelijk van de implementatie van de verschillende compilers.Op dinsdag 25 september 2001 16:10 schreef OiSyN het volgende:
[..]
floating point wordt gewoon door de cpu gedaan, en is dus niet programmeertaal afhankelijk.
There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -
niet dusOp dinsdag 25 september 2001 16:17 schreef Tsjipmanz het volgende:
[..]
Volgens mij wel afhankelijk van de implementatie van de verschillende compilers.
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Hmmm cool... Dus je kan in principe in QBasic berekeningen net zo nauwkeurig doen als in Fortran ofzo?Op dinsdag 25 september 2001 16:22 schreef OiSyN het volgende:
[..]
niet dus
behalve dat je op de cpu de precizie min of meer kunt aangeven, dus als je bijvoorbeeld in gcc of vc++ compilet met de optie -O2, dan krijg je minder default precizie. In zo verre is het misschien compiler/distributie afhankelijk, maar dat heb je wel zelf in de hand
There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
uhm nee denk het niet, fortran en qbasic zijn zo oud, die stammen nog uit de tijd dat er geen coprocessors warenOp dinsdag 25 september 2001 16:24 schreef Tsjipmanz het volgende:
[..]
Hmmm cool... Dus je kan in principe in QBasic berekeningen net zo nauwkeurig doen als in Fortran ofzo?
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Klopt in de praktijk wel, maar in principe niet... Alle programmeer platformen bieden wel een methode om met correcte decimaal te werken. Deze zou ook als standaard implementatie van float en double berekeningen genomen kunnen worden. Ik ken geen talen/compilers/platformen die dit doen, maar daar gaat het niet omOiSyN: floating point wordt gewoon door de cpu gedaan, en is dus niet programmeertaal afhankelijk.
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment