- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 7 von 7

Thema: Rechnet der Arduino Falsch?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Hi und vielen vielen Dank für die schnellen Antworten!

    Wenn ich es so rechne funktioniert es : geschw_rechts = (((-100.00 - (-83)) / (-100)) * 253);

    also einfach hinter eine Zahl ".00" anfügen für float.

    Vielen Dank

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    16.03.2011
    Ort
    Dresden
    Alter
    38
    Beiträge
    1.937
    Mal ganz davon ab, dass deine Formel ziemlich umständlich geschrieben ist. Besser wäre wohl sowas:
    geschw_rechts = (100-83)*253/100.00;

    Ist genau dasselbe, nur ohne die ganzen Vorzeichen. Ich weiß jetzt nicht, ob der erste Teil noch mit Integer gerechnet wird und das Ergebnis dann beim Teilen durch 100.00 erst in Float umgewandelt, jedenfalls würde es so effizienter gerechnet werden. Aber zumindest finde ich es so übersichtlicher. Achja, sind das alles feste Zahlen oder werden Teile davon mal durch Variablen ersetzt werden? Dann wäre es sinnvoll, alle konstanten Werte zu einer Konstanten zusammenzufassen, die dann nur abgerufen werden muss.
    AI - Artificial Idiocy

  3. #3
    Unregistriert
    Gast
    es ist nicht ungefährlich, bei Variablen zunächst alle Int Werte miteinander zu multiplizieren, bevor man dividiert.
    In diesem Falle mag es gehene, wenn die Werte aber anders aussehen, gibt's Ärger:
    Mal mit etwas anderen (größeren) Zahlen:

    (1000-87)*253/100.0

    ergibt zunächst
    913
    * 253
    => => Speicherüberlauf,
    da Int nur von -32768 bis 32767 gehen (Int-Arithmetik !),
    und dann führt auch eine anschließende Division /100.0 zu nichts sinnvollerem.

    Wenn man also den Wertebereich der Rechnung nicht für alle möglichen Fälle sicher überschauen und von vornherein eingrenzen kann, ist ein rechtzeitiges Typecasting nach float der einzig sichere Ausweg,
    d.h. Konstanten als floats schreiben mit Dezimalpunkt oder Int-Variablen per (float) vorher explizit casten, bevor man mit ihnen weiter herumrechnet.

Ähnliche Themen

  1. schon mal festgestellt? A. Due rechnet falsch - Mega ok!
    Von HaWe im Forum Arduino -Plattform
    Antworten: 47
    Letzter Beitrag: 21.11.2014, 22:27
  2. RN-Control rechnet nicht Richtig
    Von robonooby im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 2
    Letzter Beitrag: 19.03.2011, 17:04
  3. Antworten: 5
    Letzter Beitrag: 07.08.2008, 17:38
  4. Wie rechnet man GPS Koordinaten in Meter um (NMEA)?
    Von Fourstroker im Forum Software, Algorithmen und KI
    Antworten: 1
    Letzter Beitrag: 25.01.2006, 13:32
  5. Rechnet der AVR falsch oder bin in ich nur zu dumm ?
    Von NumberFive im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 11.02.2005, 14:35

Stichworte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress