You are not logged in.

TheRyk

KKK?! That's not good.

  • "TheRyk" is male
  • »TheRyk« is a verified user
  • "TheRyk" started this thread

Posts: 7,990

Date of registration: Mar 14th 2008

Location: Ostereierinsel

  • Send private message

member since 54 month member since 54 month member since 54 month

1

Tuesday, November 29th 2011, 5:20pm

Boolean Problem - spinn ich oder spinnt C64 EDIT: als Fließkomma-Problem identifiziert

Wieso sind diese Werte bitte laut Basic 2.0 ungleich?

Source code

1
2
3
4
q=100:ifq<>10^2then?"ungleich:"q;10^2
ungleich: 100  100

ready.
Wenn Sie irgendwelche Satzzeichen in meinen Postings vermissen, bedienen Sie sich, bitte:
@!#?@! (Zitat Q*bert, Arcade Version, 1982)

This post has been edited 1 times, last edit by "TheRyk" (Nov 29th 2011, 11:25pm)


sauhund

ist falsch abgebogen

  • "sauhund" is male

Posts: 20,359

Date of registration: Jul 16th 2005

Location: zuhause

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

2

Tuesday, November 29th 2011, 5:25pm

der ist ja geil :o) das problem liegt in der darstellung der floats... http://de.wikipedia.org/wiki/Gleitkommaz…sche_Grundlagen
http://www.hitmen-console.org http://magicdisk.untergrund.net
Die Furcht vor der freimütigen Antwort kann auch robuste Charaktere befallen.

TheRyk

KKK?! That's not good.

  • "TheRyk" is male
  • »TheRyk« is a verified user
  • "TheRyk" started this thread

Posts: 7,990

Date of registration: Mar 14th 2008

Location: Ostereierinsel

  • Send private message

member since 54 month member since 54 month member since 54 month

3

Tuesday, November 29th 2011, 5:33pm

Tatsache!

Mit

Source code

1
INT(10^2)
verhält sich alles, wie man es erwartet. :)

Danke! Man lernt nie aus, nichtmal in Basic.
Wenn Sie irgendwelche Satzzeichen in meinen Postings vermissen, bedienen Sie sich, bitte:
@!#?@! (Zitat Q*bert, Arcade Version, 1982)

schlonkel

Landgräfin Schnorchel von Möhren

  • "schlonkel" is male
  • »schlonkel« is a verified user

Posts: 10,762

Date of registration: Jul 6th 2004

Location: Gießen

  • Send private message

member since 108 month member since 108 month member since 108 month member since 108 month member since 108 month member since 108 month

4

Tuesday, November 29th 2011, 5:33pm

Das ist aber eigentlich bekannt. Ich hatte damals [tm] mal das Problem, dass 3^4 plötzlich 81.00000001 war. Solche Fehler können sich im wahrsten Sinne des Wortes multiplizieren.

DoReCo #37: 22.06.2013 - INFO - Stammtisch #29: xx.06.2013 - INFO

peiselulli

Professional

  • "peiselulli" is male

Posts: 944

Date of registration: Sep 14th 2006

  • Send private message

member since 72 month member since 72 month member since 72 month member since 72 month

5

Tuesday, November 29th 2011, 5:39pm

geht auch einfacher:

Source code

1
print 7^2


Das liegt wohl eher in der Art, wie die Exponential-Funktion berechnet wird (mit Polynomanäherung).

TheRyk

KKK?! That's not good.

  • "TheRyk" is male
  • »TheRyk« is a verified user
  • "TheRyk" started this thread

Posts: 7,990

Date of registration: Mar 14th 2008

Location: Ostereierinsel

  • Send private message

member since 54 month member since 54 month member since 54 month

6

Tuesday, November 29th 2011, 5:47pm

Bei Quadratzahlen kannte ich das Problem und habe deshalb niemals

Source code

1
X^2
benutzt, sondern immer

Source code

1
X*X


Dass nicht mal Zehnerpotenzen sauber laufen bzw. der Rundung mittels INT bedürfen, überrascht mich nun aber doch. Da wird doch nun wirklich bloß das Komma verschoben!
Wenn Sie irgendwelche Satzzeichen in meinen Postings vermissen, bedienen Sie sich, bitte:
@!#?@! (Zitat Q*bert, Arcade Version, 1982)

hoogo

Eimergesicht mit Wurst

  • "hoogo" is male

Posts: 1,347

Date of registration: Jan 22nd 2005

Location: Mülheim/Ruhr

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

7

Tuesday, November 29th 2011, 8:29pm

Ich meine, das C64-Fließkommeformat basiert nicht auf 10er-Potenzen, sondern auf 2er-Potenzen. Das tut zwar im konkreten Falle nichts zur Sache, erklärt aber, warum es auch mit hübsch aussehenden Brüchen Probleme gibt.

Das Format ist aber glaube ich allgemein die Regel, Fließkomma auf Basis von 10er-Potenzen ist eher die Ausnahme.
Vollmond war gestern!

TheRyk

KKK?! That's not good.

  • "TheRyk" is male
  • »TheRyk« is a verified user
  • "TheRyk" started this thread

Posts: 7,990

Date of registration: Mar 14th 2008

Location: Ostereierinsel

  • Send private message

member since 54 month member since 54 month member since 54 month

8

Tuesday, November 29th 2011, 9:40pm

Ja, habe mir des Sauhunds Link nochmal angesehen, scheint in der Tat ein im Binärmodus liegendes Problem zu sein, da können Sachen problematisch sein, die in dezimal total glatt aussehen.
Wenn Sie irgendwelche Satzzeichen in meinen Postings vermissen, bedienen Sie sich, bitte:
@!#?@! (Zitat Q*bert, Arcade Version, 1982)

9

Tuesday, November 29th 2011, 9:45pm

Jaja, der Horror jedes Computers: 1/10 ;-)

peiselulli

Professional

  • "peiselulli" is male

Posts: 944

Date of registration: Sep 14th 2006

  • Send private message

member since 72 month member since 72 month member since 72 month member since 72 month

10

Tuesday, November 29th 2011, 10:40pm

Wenn es nur das Format wäre, dann wäre aber 7*7 auch 49.00001. Ist es aber nicht, sondern 49 !

hoogo

Eimergesicht mit Wurst

  • "hoogo" is male

Posts: 1,347

Date of registration: Jan 22nd 2005

Location: Mülheim/Ruhr

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

11

Tuesday, November 29th 2011, 11:10pm

Wieso? 10*10 ist doch auch 100, 10^2 haut hier nicht so ganz hin. Aber das liegt (eventuell/möglicherweise/warscheinlich) nicht am Format, sondern an der Art der Berechnung.
Vollmond war gestern!

peiselulli

Professional

  • "peiselulli" is male

Posts: 944

Date of registration: Sep 14th 2006

  • Send private message

member since 72 month member since 72 month member since 72 month member since 72 month

12

Tuesday, November 29th 2011, 11:12pm

so meinte ich das

TheRyk

KKK?! That's not good.

  • "TheRyk" is male
  • »TheRyk« is a verified user
  • "TheRyk" started this thread

Posts: 7,990

Date of registration: Mar 14th 2008

Location: Ostereierinsel

  • Send private message

member since 54 month member since 54 month member since 54 month

13

Tuesday, November 29th 2011, 11:21pm

Wenn ich als Nicht-Quantenmathematiker das Ganze richtig verstehe, liegt es in etwa daran:
ohne Rest teilbare Zahlen in DEZ sind nicht ohne Rest teilbare Zahlen in BIN
--> Rundungen in BIN --> Fehler/"Artefakte" bei Rückumwandlung in DEZ

Tückisch ist eben, dass dezimal auf dem C64 (in Basic 2.0) 10.0000000001 als 10 dargestellt(!= gespeichert --> 10.0000000001) wird und man erst bei BOOLEAN-Operation (oder womöglich beim Weiterrechnen mit dem Wert) drüber stolpert und denkt "Mein Schwein pfeift!"
Wenn Sie irgendwelche Satzzeichen in meinen Postings vermissen, bedienen Sie sich, bitte:
@!#?@! (Zitat Q*bert, Arcade Version, 1982)

sauhund

ist falsch abgebogen

  • "sauhund" is male

Posts: 20,359

Date of registration: Jul 16th 2005

Location: zuhause

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

14

Tuesday, November 29th 2011, 11:39pm

Quoted

Wenn ich als Nicht-Quantenmathematiker das Ganze richtig verstehe, liegt es in etwa daran:
ohne Rest teilbare Zahlen in DEZ sind nicht ohne Rest teilbare Zahlen in BIN
--> Rundungen in BIN --> Fehler/"Artefakte" bei Rückumwandlung in DEZ

genau so :)
http://www.hitmen-console.org http://magicdisk.untergrund.net
Die Furcht vor der freimütigen Antwort kann auch robuste Charaktere befallen.

peiselulli

Professional

  • "peiselulli" is male

Posts: 944

Date of registration: Sep 14th 2006

  • Send private message

member since 72 month member since 72 month member since 72 month member since 72 month

15

Tuesday, November 29th 2011, 11:47pm

hat bloß wenig mit 10 und 100 zu tun:

10 = (binär) 1.01 * 2^3
100 = (binär) 1.1001 * 2 ^ 6

Das ist in Float noch sehr gut darstellbar. Das Problem ist die Polynomnäherung.

hoogo

Eimergesicht mit Wurst

  • "hoogo" is male

Posts: 1,347

Date of registration: Jan 22nd 2005

Location: Mülheim/Ruhr

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

16

Wednesday, November 30th 2011, 10:41am

Stimmt.

"...ohne Rest teilbar in Dez..." ist unglücklich ausgedrückt. "Kommaverschieben in Dez, um eine ganze Zahl zu bekommen" passt besser. Denn erst kommt die Umrechnung ins Binäre, dann das Verschieben des Kommas in dieser binären Zahl.

Ganze Zahlen lassen sich prima als Float darstellen, Brüche nur, wenn der Nenner keine anderen Primfaktoren als 2 enthält. So eine einfache Zahl wie 0,1, bei der man im Zehnersystem nur das Komma verschieben müsste, lässt sich im Zweiersystem nur als Bruch mit Periode darstellen.
Vollmond war gestern!

WTE

Master

  • "WTE" is male
  • »WTE« is a verified user

Posts: 1,903

Date of registration: Feb 11th 2005

Location: Deutschland

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

17

Thursday, December 1st 2011, 12:50am

Tatsache!

Mit

Source code

1
INT(10^2)
verhält sich alles, wie man es erwartet. :)

Danke! Man lernt nie aus, nichtmal in Basic.

Da würde ich sagen: Glück gehabt!
Es gibt Fälle, da hilft die INT-Funktion auch nichts. Ich kann da jetzt nicht mehr das passende Beispiel zu liefern, ist zu lange her, aber ich bin damals schier verzweifelt, weil trotz INT zwei "identische" Zahlen nicht gleich waren. Ich musste dann erst die Zahlen in Strings umwandeln. Dann war gleiches plötzlich wírklich gleich. Im Übrigen verhalten sich da Compiler manchmal anders als der Interpreter ...

Gruß WTE

BASIC-FAN

Intermediate

  • "BASIC-FAN" is male

Posts: 373

Date of registration: Aug 7th 2011

  • Send private message

member since 18 member since

18

Thursday, December 8th 2011, 6:43pm

Hallo, hier ist er wieder der Basicfan,
probiert es doch einfach einmal mit

1e2

Schönen Gruß, Dirk

BlackJack

ɹǝʞɔɐɥ oɹʇǝɹ

Posts: 209

Date of registration: Nov 18th 2009

Location: Berlin

  • Send private message

member since 36 month member since 36 month

19

Thursday, December 8th 2011, 7:29pm

@BASIC-FAN: Da kann man auch gleich 100 für schreiben. Ich denke mal das bei den realen Programmen wo das Problem auftrat nicht einfach 10^2 im Quelltext stand, sondern mindestens einer der Operanden eine Variable war. :roll:
Never eat yellow snow

TheRyk

KKK?! That's not good.

  • "TheRyk" is male
  • »TheRyk« is a verified user
  • "TheRyk" started this thread

Posts: 7,990

Date of registration: Mar 14th 2008

Location: Ostereierinsel

  • Send private message

member since 54 month member since 54 month member since 54 month

20

Saturday, December 10th 2011, 3:20pm

So ist es natürlich :) Das 10^2 diente hier nur der Veranschaulichung.

Das E kann mal helfen, um Basicstarts/SYS-Zeilen abzukürzen, SYS57E3 statt SYS57000, hat mir Enthusi mal "beigebracht" :)
Wenn Sie irgendwelche Satzzeichen in meinen Postings vermissen, bedienen Sie sich, bitte:
@!#?@! (Zitat Q*bert, Arcade Version, 1982)