- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Rechenproblem mit Single

  1. #11
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    48
    Beiträge
    622
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Zitat Zitat von for_ro
    und beklagst dich über einen Fehler auf der 1/10.000.000stel Stelle.
    Eigentlich beklage ich mich über das sehr enttäuschende Ergebnis von 162.0 /10 = 16.199999...

    Das bekomme ich ohne Controller/Computer genauer hin!
    Morgen teste ich mal &B10100010 / &B1010 = ???
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

  2. #12
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Das Problem ist wie oben schon mal erwähnt, dass sich einige zahlen, die als Dezimalzahl noch ganz einfach aussehen sich nicht exakt im binären Fließkommaformat darstellen lassen. Wenn da beim Umwandeln zurück ins Dezimalformat nich genügend gerundet wird, sieht man halt den kleinen Unterschied. Eine typische Zahl die nicht geht ist 0,1. Dafür geht so etwas wie 7/8192 ohne Probleme.


    Als ein altes recht krasses Beispiel, gab es bein C64 den effekt, das man wenn man 20 mal 0,1 aufaddiert hat nicht genau 2 rausbekommen hat.

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von Tido
    Zitat Zitat von for_ro
    und beklagst dich über einen Fehler auf der 1/10.000.000stel Stelle.
    Eigentlich beklage ich mich über das sehr enttäuschende Ergebnis von 162.0 /10 = 16.199999...

    Das bekomme ich ohne Controller/Computer genauer hin!
    Morgen teste ich mal &B10100010 / &B1010 = ???
    Auch für die Dezimalzahl 16,2 gibt es Binärsystem keine Darstellung. Du kommst zwar beliebig genau heran, aber treffen kannst du sie nicht. Schon gar nicht mit 16 oder 32 Stellen. Wenn du 32 Stellen hinter dem Komma hättest (Single hat insgesamt 32 Stellen), dann wäre dein Ergebnis 16,199999999953434. Alle Systeme werden sich von unten "herantasten". Denn wenn du einmal drüber bist, kannst du durch weiteres hinzufügen nicht mehr drunter kommen.

    Aber wie ich dir oben schon geraten habe, nimm einfach die Fusing Funktion und gut ist. Man muss lernen, die Beschränkungen eines Systems zu verstehen und diese zu nutzen.

  4. #14
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    48
    Beiträge
    622
    Ok,

    ich gebe mich mit diesen Einschränkungen zufrieden.
    Hauptsache ich habe hinterher in der Variable Akku irgendwie den Wert 16,2.
    Leider funktioniert das mit round nicht, denn dann gibt's keine Nachkommastellen (deshalb ja auch die Idee, erst zu runden und dann durch 10 zu teilen).

    Ich denke, ich werde mir die Division durch 10 sparen und später bei der LCD-Ausgabe einfach das Komma an der richtigen Stelle einfügen.
    Den Umweg über einen string sehe ich gar nicht ein.
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von for_ro Verfasst am: Mo 20 Jul 2009, 19:39
    Was hälst du denn hiervon:

    Do
    Dummy = Getadc(0)
    Akku = Dummy
    Akku = Akku * 0.0195
    Print Fusing(akku , "##.#")
    Loop
    Hast du das mal probiert? Es macht exakt das, wonach du seit Stunden fragst.
    Warum muss in Akku der Wert 16,2 sein? Wo es sowieso nicht möglich ist, wie ich dir gezeigt habe. Lass doch den scheinbar ungenauen Wert drin. Nur wenn du ihn ausgibst, machst du den Wert für Menschen leichter lesbar.

  6. #16
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    48
    Beiträge
    622
    Der Wert von Akku muss mit einem Byte per I²C übertragen werden, also bleibt nur der Wertebereich von 0 - 255. Deshalb benötige ich ganzzahlige Werte für Akku, also z.B. 162 (nicht 16,2 wie ich geschrieben hatte).
    Für die Ausgabe kann ich dann ja Fusing nehme.
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

LiFePO4 Speicher Test