-         

Ergebnis 1 bis 4 von 4

Thema: Kaufmännisches Runden ohne Nachkommastellen in C,C++

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1

    Kaufmännisches Runden ohne Nachkommastellen in C,C++

    Anzeige

    Hallo Freunde,
    gibt es was "Vorgefertigtes" in den Libraries womit man kaufmännisch Runden kann, also 2,3 = 2 bzw 2,7 = 3 ? Ich möchte nicht zu Bascom greifen, nur um so eine fertige "Round Routine" zu bekommen. Da ich noch nicht so in jeden Winkel der C programmierung gelangt bin, geht es auch so über Typenconvertierung float zu int... bspw Runderwert = int(Floatwert + .5). Aber was frage ich da werde mal probieren, oder geht es noch einfacher ?
    Danke schon mal..

    Gerhard

    PS Schon erledigt, war ja dummm danach zu fragen, aber ich hatte gerade nix zur hand um selber zu Probieren...
    Geändert von oderlachs (01.04.2013 um 17:20 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    // korrektes auf- und abrunden von double werten
    int d2i(double d)
    {
    return d<0?d-.5:d+.5;
    }
    Nur als Nachtrag: So geht es auch mit negativen Werten. Am µC würde man wohl lieber float nehmen, um Speicher und Rechenzeit zu sparen.

    Grüße

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Danke Robocat, das werde ich mir notieren, als schriftlicher Speicher, mein Speicher im Kopf ist schon etwas flüchtig geworden mit dem Alter

    Ich muss Spannungen auswerten, wo es nicht auf milliVolts ankommt, wohl aber auf glatte Zahlen...

    Gruss Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.11.2004
    Beiträge
    451
    Double und Float ist eigentlich auf einem µC ohne FPU zu vermeiden, da es lahm ist und unnötig Speicher frisst.

    Am einfachsten dürfte Festkomma Arithmetik sein und du addierst das erste bit nach dem Komma auf deine Ganzzahl. Ist es 0, ist dein Wert kleiner 0.5 ist es 1 ist er mindestens 0.5.
    Wie man aber mit einem Festkomma unter C programmiert, weiß ich leider nicht.

    Bei deinem Problem könntest du mMn. auch komplett auf Kommazahlen Verzichten, indem du mit mV rechnest un am Ende dann alles so weit verschiebst, dass Volt raus kommen und zum Schluss den Carry addiert.
    Kommt aber ein bisschen auf die Messung an, ob es sich lohnt.
    Wie groß ist denn deine Auflösung, deine Referenzspannung und dem entsprechen, wie viel mV hat ein bit?

Ähnliche Themen

  1. Voltmessung mit Nachkommastellen
    Von bennycy im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 12
    Letzter Beitrag: 31.01.2009, 20:04
  2. Nachkommastellen mit Double
    Von Furtion im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 20.08.2007, 22:26
  3. Wurzel Nachkommastellen als BCD...?
    Von Jaecko im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 8
    Letzter Beitrag: 04.07.2007, 10:45
  4. Nachkommastellen
    Von rolfw20 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 10.04.2006, 23:11
  5. Nachkommastellen kürzen - Wie?
    Von m@rkus33 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 26.12.2005, 14:04

Berechtigungen

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