Der Böse Float
Übersicht

![]() |
Jan_Ehemaliger AdminBetreff: Der Böse Float |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN]
|
||
between angels and insects |
BlackTermi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
den sinn deines Programmes kapier ich irgendwie nicht (muss aber nicht zwingend an dir liegen)
willst dun darauf hinweisen das x niemals 4 ist obwohl man immer + 0.2 rechnet? |
||
DarkMike |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja, aber ne frage wiso is das so??????? | ||
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein) |
![]() |
Ninja |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm interresant ![]() |
||
BlackTermi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
DarkMike hat Folgendes geschrieben: ja, aber ne frage wiso is das so???????
Jan_ hat Folgendes geschrieben: "wow. Floats sind wirklich böse"
|
||
KHORN |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist normal.
Liegt also nicht an BB... Ich habs in C++ auch probiert und da ist es genauso :/ Floats zum Abfragen ist nicht gut ![]() Also genaue Floats abzufragen kann man vergessen. Höchstens sowas : BlitzBasic: [AUSKLAPPEN] If x>3.9 And x<4.1 Then B=1 ![]() Man sollte halt nicht soviele Floats verwenden, dass bringt unglück ![]() Am besten nur für sachen verwenden die man nicht abfragen muss. Gruß KHORN |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Liegt daran das Floats binär rechnen und es da zu kleinen Differenzen kommt!
Hier mal ein etwas anderes beispiel! Mit periode ![]() 1/3 +1/3 +1/3 = 1 Was denkt ihr macht Blitz daraus? 1.0 oder 0.99999 hier der Testcode: ![]() BlitzBasic: [AUSKLAPPEN] a#= 1.0/3.0 + 1.0/3.0 + 1.0/3.0 |
||
[BB2D | BB3D | BB+]
|
DarkMike |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Rallimen hat Folgendes geschrieben: Liegt daran das Floats binär rechnen und es da zu kleinen Differenzen kommt!
Hier mal ein etwas anderes beispiel! Mit periode ![]() 1/3 +1/3 +1/3 = 1 Was denkt ihr macht Blitz daraus? 1.0 oder 0.99999 hier der Testcode: ![]() BlitzBasic: [AUSKLAPPEN] a#= 1.0/3.0 + 1.0/3.0 + 1.0/3.0 ja das weiss ich auch, aber o.2 + ... is nunmal irgendwann mal 4!!! |
||
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein) |
![]() |
Waveblue |
![]() Antworten mit Zitat ![]() |
---|---|---|
https://www.blitzforum.de/viewtopic.php?t=9514 | ||
This is 10% luck
20% skill 15% concentrated power of will 5% pleasure, 50% pain and 100% reason to remember the name |
BlackTermi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
DarkMike hat Folgendes geschrieben: Rallimen hat Folgendes geschrieben:
Liegt daran das Floats binär rechnen und es da zu kleinen Differenzen kommt!
Hier mal ein etwas anderes beispiel! Mit periode ![]() 1/3 +1/3 +1/3 = 1 Was denkt ihr macht Blitz daraus? 1.0 oder 0.99999 hier der Testcode: ![]() BlitzBasic: [AUSKLAPPEN] a#= 1.0/3.0 + 1.0/3.0 + 1.0/3.0 ja das weiss ich auch, aber o.2 + ... is nunmal irgendwann mal 4!!! genauso ist 1.0/3.0 + 1.0/3.0 + 1.0/3.0 = 0,99999... und nicht 1!!!!! |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: genauso ist 1.0/3.0 + 1.0/3.0 + 1.0/3.0 = 0,99999...
und nicht 1!!!!! Als Bruch .... 1/3 + 1/3 + 1/3 = 3/3 3/3 = 1 |
||
[BB2D | BB3D | BB+]
|
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und genau deswegen brauchte ich einst diese kleine Funktion
https://www.blitzforum.de/viewtopic.php?t=12848 *hust*Nehmt lieber die von Xaron, die ist kürzer und macht das gleiche ![]() greetz |
||
MegaTefyt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da wurde aber ein ganz neues Thema aufgegriffen. *Ironie*
Als Programmierer sollte sowas zur Allgemeinbildung gehören. Fließkommazahlen werden intern nunmal binär gespeichert und da sind halt "normale" Kommazahlen wie z.B. 1.5 periodische Zahlen mit unendlich vielen Nachkommastellen und dann kommt es halt irgendwann zu diesen "Rundungsfehlern". |
||
BlackTermi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Rallimen hat Folgendes geschrieben: Zitat:
genauso ist 1.0/3.0 + 1.0/3.0 + 1.0/3.0 = 0,99999...
und nicht 1!!!!! Als Bruch .... 1/3 + 1/3 + 1/3 = 3/3 3/3 = 1 ups, naja, hmm, ja so gesehen hast du recht |
||
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlackTermi hat Folgendes geschrieben: genauso ist 1.0/3.0 + 1.0/3.0 + 1.0/3.0 = 0,99999... und nicht 1!!!!! ausserdem kann man periodische zahlen folgendermaßen schreiben: 0,Periode4 = 4/9 0,Periode5 = 5/9 0,Periode9 = 9/9 = 1 also entspricht 0,Periode9 der 1 |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wer 0.2 in Binär und wieder zurück in Dezimal umrechen kann, der bekommt ein Keks. | ||
vertex.dreamfall.at | GitHub |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dezimal: 0,2 -> Binär: 0 -> Dezimal: 0
is übigens bei jeder zahl z < 1 z >= 0 so. aber warum? |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
32 Bit IEEE 754 Format du kleiner Krümelkacker!
Edit: Zumal es auch Binärzahlen in Kommadarstellung gibt! |
||
vertex.dreamfall.at | GitHub |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group