Hallo zusammen
In einem bestimmten Programm versuche ich zwei etwas grössere Zahlen vom Typ Single zu multiplizieren. Das Ergebnis soll wieder einer Single-Variable zugeordnet werden. Leider gibt das stets NAN (heisst glaub ich "Not a Number", oder ?).
Ich hab jetzt zum Test folgendes Programm geschrieben:
Als Ergebnis erschint NAN.Code:$regfile = "M8def.dat" $crystal = 4000000 Config Lcd = 20 * 4 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 dim a as single dim b as single dim c as single a = 70000 b = 70000 c = a * b cls lcd "a = " ; a lowerline lcd "b = " ; b thirdline lcd "a * b = " ; c end 'end program
Mit a=b=60000 funktioniert das gut, aber mit a=b=70000 oder grösser gibt es nur noch NAN.
Wo liegt das Problem?
Schliesslich ist 70000 * 70000 = 4.9e+9 und as liegt bei weitem noch im Wertebereich des Single-Typs.
(Zitat aus der Hilfe zu Bascom: "Singles are stored as signed 32 bit binary numbers. Ranging in value from 1.5 x 10^–45 to 3.4 x 10^38")
Probeweise habe ich mal noch mit den Einstellungen "HW Stack", "Soft Stack" und "Framesize" bei den "Compiler-Options" etwas herumgespielt. Das scheint aber keinen Einfluss zu haben.
Im Voraus besten Dank für jede Hilfe!







Zitieren

Lesezeichen