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:
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
Als Ergebnis erschint NAN.
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!
Lesezeichen