- Labornetzteil AliExpress         
Ergebnis 1 bis 2 von 2

Thema: Multiplikation von Single-Zahlen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    25.03.2005
    Beiträge
    10

    Multiplikation von Single-Zahlen

    Anzeige

    E-Bike
    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!

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Das Problem liegt nicht in der Multiplikation, sondern in der Routine, welche die SINGLE in den ASCII-String für die Ausgabe umwandelt.
    Diese kann nur Zahlen bis zu einer bestimmten Größe darstellen. Darüber wird, obwohl ein gültiger Wert vorliegt, NAN ausgegeben.
    Ich nehme an, dass in der nächsten Release eine verbesserte Routine implementiert wird.
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen