Wie man ein Double zu einem Int in C++ rundet

Jinku Hu 12 Oktober 2023
  1. Verwendung von die Funktion round() für die Rundung von Double auf Int
  2. Verwenden Sie die Funktion lround(), um das Double in die nächste Ganzzahl zu konvertieren
  3. Verwendung von die Funktion trunc() für Double to Int-Rundung
Wie man ein Double zu einem Int in C++ rundet

In diesem Artikel werden mehrere Methoden zum Runden eines Doppels auf eine ganze Zahl in C++ erläutert.

Verwendung von die Funktion round() für die Rundung von Double auf Int

Die Funktion rund() ist in der Kopfzeile <cmath> definiert. Sie kann den nächstliegenden ganzzahligen Wert des Arguments berechnen, das der Benutzer übergibt. Halbe Fälle werden von Null weggerundet, und der zurückgegebene Wert ist vom gleichen Typ wie das Argument. Im folgenden Beispiel initialisieren wir einen willkürlichen Vektor von Verdopplungen und geben die Funktion rund() für jedes Element aus.

#include <cmath>
#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<double> dfloats{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};

  for (auto &item : dfloats) {
    cout << "round(" << item << ") = " << round(item) << endl;
  }

  return EXIT_SUCCESS;
}

Ausgabe:

round(-3.5) = -4
round(-21.1) = -21
round(-1.99) = -2
round(0.129) = 0
round(2.5) = 3
round(3.111) = 3

Verwenden Sie die Funktion lround(), um das Double in die nächste Ganzzahl zu konvertieren

Alternativ können wir die rund() Funktion verwenden, die sich fast identisch wie die rund() verhält, mit einem Unterschied: sie gibt den Wert in einem long Integer-Format zurück. Beachten Sie, dass bei beiden Funktionen der Rückgabewert unerwartet sein kann, verursacht durch verschiedene Rundungsfehler, die allgegenwärtig sind. Entsprechende Szenarien sollten wie in der Dokumentation hier angegeben behandelt werden.

#include <cmath>
#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<double> dfloats{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};

  for (auto &item : dfloats) {
    cout << "round(" << item << ") = " << lround(item) << endl;
  }

  return EXIT_SUCCESS;
}

Verwendung von die Funktion trunc() für Double to Int-Rundung

trunc() ist eine weitere nützliche Funktion aus dem <cmath> Header, die die nächste Ganzzahl berechnet, die nicht größer ist als die als Argument übergebene Zahl. trunc() berechnet den Rückgabewert im Fließkommaformat als round(). Beachten Sie, dass diese beiden Funktionen im aktuellen Rundungsmodus keine Wirkung haben. Fälle der Fehlerbehandlung sind auf der Handbuchseite beschrieben.

#include <cmath>
#include <iostream>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

int main() {
  vector<double> dfloats{-3.5, -21.1, -1.99, 0.129, 2.5, 3.111};

  for (auto &item : dfloats) {
    cout << "round(" << item << ") = " << trunc(item) << endl;
  }

  return EXIT_SUCCESS;
}
round(-3.5) = -3
round(-21.1) = -21
round(-1.99) = -1
round(0.129) = 0
round(2.5) = 2
round(3.111) = 3
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C++ Double