deuterius
24.04.2006, 23:45
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:
$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!
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:
$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!