- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Mathematisches Problem

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    Anzeige

    LiFePo4 Akku selber bauen - Video
    die Anzahl der Nullen hinter dem Punkt ist egal...

    sobald hinter einer Zahl ein ".0" kommt, wird sie als float behandelt (mit der entsprechenden Genauigkeit)
    So viele Treppen und so wenig Zeit!

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.11.2004
    Ort
    München
    Alter
    36
    Beiträge
    447
    Hi,
    in der Zeile "way_end[ch] = way_akt[ch] / factor; " ist das auch schon so eine Sache...
    way_akt[ch] ist doch ein uint16_t aber factor ist ein float oder double.
    In dem Fall hast du nicht wirklich festgelegt, ob er jetzt mit floats oder mit ints rechnen soll.
    Erst wenn du "way_end[ch] = (uint16_t)((double)way_akt[ch] / factor);" machst, kannst du dir wirklich sicher sein, dass er tut was du willst.
    Das ist zwar übertrieben, da es vorher ja auch ging, allerdings ist es wirklich ärgerlich, wenn man lange nach einem Fehler sucht und es an einem fehlenden "(float)" lag.
    Ich mache das deshalb bei Formeln mit verschiedenen Variablen-Typen immer so, dass der Compiler garnicht erst daran denken kann etwas anders zu machen als ich es will ...
    Dein 255.0000 ist allerdings wirklich übertieben, denn 255.0 reicht sicher.

    Wer sich wirklich mit Compilern auskennt (ich tu es nicht), für den ist es völlig klar, was wann überflüssig ist und wann nicht, allerdings geh ich lieber auf Nummer sicher...

    MfG Alex

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    ist eigentlich ganz einfach...

    der Compiler wird keine verlustbehafteten Operationen ausführen (es sei denn man zwingt ihn dazu),
    d.h. er wird nie aus einem float ein int machen, sondern immer umgekehrt. (das Ergebnis ist dann auch ein float)


    mach mal einen typecast von float nach int, dann wirst du höchstwahrscheinlich eine Warnung vom Compiler erhalten
    (da bei dieser Operation Daten verloren gehen)
    So viele Treppen und so wenig Zeit!

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    37
    Beiträge
    795
    Vielen Dank für eure Tipps!

    Hab meine Zeile gerade auf
    "way_end[ch] = (uint16_t)((double)way_akt[ch] / factor)"
    geändert.

    Ihr seid ein Schatz !
    Gruß,
    Franz

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Moin,

    mich würde mal interessieren, wieviel mehr Flashspeicher die Rechnung in dieser Form verbraucht im Gegensatz zu der reinen Integer Rechung. Kannst du das mal kurz ausprobieren ??

    MfG Kjion

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Danke an Michael, durch seinen Tipp "DREISATZ" bin ich draufgekommen.
    Ja, Sorry. Ich wollte dir einen Viersatz unterjubbeln. Damit geht es ja nicht.

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