Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

rekenkundige bewerkingen met floats

Pagina: 1
Acties:
  • 292 views

Onderwerpen

Vraag


  • Spiekes
  • Registratie: juni 2020
  • Laatst online: 08-07-2020
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> 1.1+1.2==2.3
True
>>> 1.1+1.3==2.4
False
>>>

Is er een verklaring voor bovenstaande?

Alle reacties


Acties:
  • 0Henk 'm!

  • jeroen3
  • Registratie: mei 2010
  • Laatst online: 08:51
Een == op floats is nooit toegestaan. Je moet altijd een range compare doen.
De methode waarop IEE 754 werkt maakt == onmogelijk.

Dat komt omdat 1.1 helemaal niet uit te drukken is in 32 bit floats. Dat slaat hij op als: 1.10000002384185791015625.
Tevens 1.2 dat is:
1.2000000476837158203125
En 2.3 is 2.2999999523162841796875.
Die berekening gaat dus nat.
Want 1.10000002384185791015625 + 1.2000000476837158203125 = 2.30000007153, en dat is geen 2.3 :P

Test het zelf.

De enige uitzondering voor == op floats is om te kijken of ze nog NULL zijn. Maar dat heb je heel weinig nodig. Zeker in python is dat uitzonderlijk.

Acties:
  • 0Henk 'm!

  • RobIII
  • Registratie: december 2001
  • Laatst online: 02:44

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Lees onze FAQ Floats (ook wel drijvende komma of zwevende komma getallen) eens. Verder: Die vragen die er staan wanneer je een nieuw topic opent staan er niet voor niets:
Mijn vraag
...

Relevante software en hardware die ik gebruik
...

Wat ik al gevonden of geprobeerd heb
...
En tot slot verwijs ik je dan ook nog even naar onze Quickstart. We stellen 't namelijk wel op prijs als je een beetje de moeite neemt om een fatsoenlijke topicstart te schrijven (en alles wat daarbij hoort - zie, nogmaals, voorgenoemde quickstart) i.p.v. je probleem te copy/pasten / dumpen en "Is er een verklaring voor bovenstaande?" erbij te typen.
jeroen3 schreef op zondag 14 juni 2020 @ 00:00:
Een == op floats is nooit toegestaan.
Onzin, dat is prima toegestaan, maar 't doet misschien niet altijd wat je zou verwachten als je niet weet hoe floats werken.

[Voor 32% gewijzigd door RobIII op 14-06-2020 00:04]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


Dit topic is gesloten.



Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True