Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Arduino Programmierung: Zahlen formatieren

Posted on 4. März 202418. Februar 2024 by Stefan Draeger

In diesem Beitrag möchte ich dir gerne zeigen, wie du effektiv Zahlen formatieren kannst. Damit knüpfe ich an den Beitrag Arduino Programmierung: Ausgabe formatierter Strings / Zeichenketten an, wo ich dir bereits ausführlich gezeigt habe, wie du Strings formatierst.

Arduino Programmierung: Zahlen formatieren
Arduino Programmierung: Zahlen formatieren

Inhaltsverzeichnis

  • Wann muss ich Zahlen formatieren?
  • Formatieren von Gleitkommazahlen
    • Funktion zum Generieren von Zufallszahlen
    • Runden von Gleitkommazahlen
    • Formatieren einer Gleitkommazahl auf eine Nachkommastelle
      • Alternative Lösung mit truncf
    • Formatieren von Zahlen mit dtostrf
  • Formatieren von natürliche Zahlen
  • Fazit – Formatierung von Zahlen am Arduino

Wann muss ich Zahlen formatieren?

Wenn du Sensordaten auf einem Display anzeigen möchtest, dann hast du nur begrenzten Platz somit musst du diese Werte auf ein bestimmtes Format einschränken. Zumeist wirst du hier die Nachkommastellen manipulieren.

Bei der Kommunikation zwischen verschiedenen Geräten, sei es über serielle Verbindungen oder drahtlose Protokolle, ist die richtige Formatierung der Zahlen wichtig, um sicherzustellen, dass die Daten korrekt interpretiert werden können. Dies könnte die Verwendung von festen Breitendaten oder das Senden von Zahlen als Teil von Zeichenketten umfassen.

Wenn du Benutzereingaben in deinem Arduino-Programm verarbeitest, musst du sicherstellen, dass die eingegebenen Zahlen im erwarteten Format sind. Dies könnte die Umwandlung von Zeichenketten in numerische Werte und die Berücksichtigung von Dezimalstellen oder negativen Zahlen umfassen.

Formatieren von Gleitkommazahlen

Zunächst zeige ich dir, wie du Gleitkommazahlen formatieren kannst. Diese Zahlen können zum Beispiel von einem Sensor kommen und die Ausgabe könnte dann auf einem kleinen OLED-Display erfolgen.

Funktion zum Generieren von Zufallszahlen

Damit wir die nachfolgenden Beispiele ohne eine Schaltung ausprobieren können, habe ich eine kleine Funktion zum Generieren von Zufallszahlen erstellt.

long zufallszahl;

void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(0));
}

double findRandomFloatpointNumber() {
  zufallszahl = random(100);
  return zufallszahl * 0.835;
}

void loop() {
  double value = findRandomFloatpointNumber();
  Serial.print("Zufallszahl: ");
  Serial.println(value);
  delay(500);
}

Diese Funktion liefert Zufallszahlen mit zwei Nachkommastellen, mit welchen wir nun arbeiten können.

Runden von Gleitkommazahlen

Mit der Funktion round kannst du eine Gleitkommazahl kaufmännisch auf und abrunden lassen. Dazu musst du deinen Wert lediglich als Parameter übergeben und erhältst als Rückgabewert den gerundeten Wert.

double value = findRandomFloatpointNumber();
Serial.print("Zufallszahl: ");
Serial.print(value);

Serial.print(" > gerundet: ");
Serial.println(round(value));

Im seriellen Monitor geben wir jetzt die ermittelte Zufallszahl sowie die gerundete Zahl aus.

Programm – runden von GleitkommazahlenHerunterladen

Formatieren einer Gleitkommazahl auf eine Nachkommastelle

Wenn wir nur eine Nachkommastelle benötigen, dann müssen wir den Gleitkommawert auf eine Stelle nach dem Komma manipulieren. Dazu habe ich mir eine kleine Funktion geschrieben, welche dieses für mich universal erledigt.

Dieser Funktion werden zwei Parameter übergeben, zum einen die Gleitkommazahl und die gewünschte Anzahl der Nachkommastellen.

//Funktion zum runden einer Gleitkommazahl 
//auf eine Stelle nach dem Komma.
double roundWithDigits(double value, int digits) {
  return floor(value * pow(10, digits)) / pow(10, digits);
}

Mit dieser Funktion können wir jetzt sehr einfach die Zufallszahl auf eine Stelle nach dem Komma kürzen.

double gekuerzteZahl = roundWithDigits(value, 1);
Serial.print(" > gekürzte Zahl: ");
Serial.println(gekuerzteZahl);

In der Ausgabe sehen wir jetzt, dass nicht gerundet wird, sondern zweite Stelle nach dem Komma hart abgeschnitten wird.

Programm – kürzen von Gleitkommazahl zahlenHerunterladen

Alternative Lösung mit truncf

Auf Stackoverflow habe ich eine Lösung gefunden, welche eine Gleitkommazahl mit der Funktion truncf auf eine Stelle nach dem Komma kürzt.

double gekuerzteZahl = truncf(value * 10) / 10;

Formatieren von Zahlen mit dtostrf

In diesem Beispiel wird dtostrf verwendet, um die Gleitkommazahl in einen char-Array zu konvertieren und dabei die gewünschte Anzahl von Nachkommastellen zu berücksichtigen.

Du musst jedoch darauf achten das, das char Array für den Wert groß genug sein muss!

//char Array für den späteren formatierten Wert
  char buffer[5];
  //Konstanten für die Parameter der Funktion dtostrf
  const int stellenVorDemKomma = 4;
  const int stellenNachDemKomma = 1;
  //erster Parameter, der Gleitkommawert welcher formatiert werden soll
  //zweiter Parameter, wieviele Stelle maximal vor dem Komma sein sollen,
  //dritter Parameter, wieviele Stellen maximal nach dem Komma sein sollen,
  //vierter Parameter, das char Array in welchen der Wert geschrieben werden soll
  dtostrf(value, stellenVorDemKomma, stellenNachDemKomma, buffer);  

Wenn wir uns nun die Ausgabe betrachten, dann wird nicht wie im Beispiel zuvor einfach die zweite Nachkommastelle abgeschnitten, sondern auf eine Stelle nach dem Komma kaufmännisch gerundet.

Damit haben wir jetzt die Möglichkeit Messwerte wie Temperatur, Abstand, etc. mit einer größeren Genauigkeit anzuzeigen.

Programm – kaufmännisch runden mit dtostrf auf eine Stelle nach dem KommaHerunterladen

Formatieren von natürliche Zahlen

Natürliche Zahlen sind eine Menge von positiven ganzen Zahlen, die ab der Zahl 1 beginnen und sich unendlich in aufsteigender Reihenfolge fortsetzen.

Anders als bei Gleitkommazahlen gibt es wenig Anwendungsfälle natürliche Zahlen zu formatieren. Jedoch können wir diese Zahlen mit führenden Nullen oder Zeichen auffüllen, um so ein bestimmtes Muster zu erfüllen.

  char buffer[10];
  sprintf(buffer,"%09d", value);
  Serial.print(" > führende Nullen: ");
  Serial.println(buffer);

In der Ausgabe siehst du das die Zufallszahlen auf maximal 9 Stellen erweitert werden. Wenn jetzt die Zahl kleiner als 10 ist, wird eine Null mehr hinzugefügt.

Programm – natürliche Zahlen mit führenden NullenHerunterladen

Fazit – Formatierung von Zahlen am Arduino

Mit diesem Beitrag habe ich dir soeben ein paar Wege gezeigt, wie du Zahlen am Arduino formatieren kannst. Dabei bin ich speziell auf die Gleitkommazahlen eingegangen, da diese doch recht öfters vorkommen und gerne verarbeitet werden.

Im nächsten Beitrag zeige ich dir dann, wie du diese Zahlen untereinander konvertieren und so zwischen den Datenformaten wechseln kannst.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}