Maison > Article > développement back-end > Programme C++ pour arrondir un nombre à n décimales
Représenter des nombres en sortie est une tâche intéressante et importante lors de l'écriture d'un programme dans n'importe quelle langue. Pour les types entiers (données de type court, long ou moyen), il est facile de représenter des nombres en sortie. Pour les nombres à virgule flottante (de type flottant ou double), nous devons parfois les arrondir à un nombre spécifique de décimales. Par exemple, si nous voulons représenter 52,24568 sous forme de trois décimales, un prétraitement est nécessaire. Dans cet article, nous présenterons plusieurs techniques pour représenter les nombres à virgule flottante avec un nombre spécifique de décimales par arrondi.
Parmi les différentes méthodes, il est important d'utiliser une chaîne de format de type C, d'utiliser l'argument de précision et d'utiliser la fonction round() de la bibliothèque mathématique. Regardons-les un par un. Avec une syntaxe correcte et des exemples de code.
En langage C, nous utilisons la fonction printf() pour représenter l'impression avec format. Pour utiliser la fonction printf() pour afficher certaines données, vous devez spécifier la chaîne de format à l'avance. La même fonction printf() fonctionne également en C++. Pour représenter un nombre avec un nombre spécifique de décimales, la syntaxe de formatage ressemblerait à ceci
Syntaxe de l'instruction printf.
printf ( “%.<number of decimal place>f”, <floating point number> );
Par exemple, si nous voulons afficher une variable à virgule flottante NUM, en conservant 4 décimales, l'instruction sera comme ceci -
printf ( “%.4f”, NUM );La traduction chinoise de
#include <iostream> using namespace std; void solve( float number) { printf ( "%.3f", number ); } int main(){ cout << "Number 45.278586 up to 3 decimal places: "; solve( 45.278586 ); }
Number 45.278586 up to 3 decimal places: 45.279
Dans cet exemple, nous pouvons voir que le nombre donné a 6 décimales. Mais nous n’affichons qu’à 3 décimales. Et automatiquement converti à la valeur la plus proche une fois arrondi. Cependant, ce procédé présente un inconvénient. Nous ne pouvons à aucun moment modifier dynamiquement la valeur décimale. Pour surmonter ce problème, nous pouvons adopter une autre approche en utilisant la méthode setprecision() basée sur C++.
C++ a une fonction de formatage spéciale appelée setprecision(), qui est utilisée pour définir la valeur de précision jusqu'à n décimales. Pour utiliser cette méthode, nous devons importer la bibliothèque iomanip. Il faut également préciser que nous utilisons un nombre fixe de décimales. La syntaxe est la suivante :
Définir la méthode set précision()
include <iomanip> std::cout << std::fixed; std::cout << std::setprecision( <number of decimal places> ); std::cout << The_floating_point_number;
Par exemple, si nous voulons afficher une variable à virgule flottante NUM, en conservant 4 décimales, l'instruction sera comme ceci -
include <iomanip> std::cout << std::fixed; std::cout << std::setprecision( 4 ); std::cout << NUM;La traduction chinoise de
#include <iostream> #include <iomanip> using namespace std; void solve( float number, int place) { cout << fixed; cout << setprecision( place ); cout << number << endl; } int main(){ cout << "Number 45.278586 up to 3 decimal places: "; solve( 45.278586, 3); cout << "Number 45.278586 up to 4 decimal places: "; solve( 45.278586, 4); cout << "Number 45.278586 up to 5 decimal places: "; solve( 45.278586, 5); }
Number 45.278586 up to 3 decimal places: 45.279 Number 45.278586 up to 4 decimal places: 45.2786 Number 45.278586 up to 5 decimal places: 45.27859
C'est une manière idéale de représenter n chiffres après la virgule décimale. Parfois, lorsque n = 0, on peut utiliser une autre méthode pour arrondir. Cela convertira le nombre en un entier. La méthode spécifique est la suivante −
La bibliothèque "cmath" possède une méthode round() pour convertir un nombre en son entier le plus proche. Il s’agit donc de convertir un nombre à virgule flottante en 0 décimale. La syntaxe est la suivante.
Utilisez la méthode round()
include <cmath> float res = round ( <floating point number> );
Par exemple, si nous voulions arrondir le nombre 45,254 à l'entier le plus proche, l'énoncé ressemblerait à ceci.
include <cmath> float res = round ( 45.254 ); std::cout << res;La traduction chinoise de
#include <iostream> #include <cmath> using namespace std; void solve( float number) { float res; res = round ( number ); cout << res << endl; } int main(){ cout << "Number 45.278586 to its nearest integer: "; solve( 45.278586 ); cout << "Number 89.7854 to its nearest integer: "; solve( 89.7854 ); cout << "Number -45.69 to its nearest integer: "; solve( -45.69 ); }
Number 45.278586 to its nearest integer: 45 Number 89.7854 to its nearest integer: 90 Number -45.69 to its nearest integer: -46
Dans cet exemple, il est évident que le moyen approprié et simple de convertir un nombre à virgule flottante en l'entier le plus proche est d'utiliser la fonction round(). Cette fonction prend un nombre comme argument et renvoie l'équivalent entier. Dans notre exemple, nous avons un nombre négatif -45,69, et après l'avoir arrondi, il devient -46, ce qui est plus petit que le nombre d'origine. La méthode round() n’est donc pas comme floor() ou ceil().
Lorsque nous écrivons du code en C++, il existe peu de façons de représenter des nombres à virgule flottante jusqu'à n décimales. La méthode la plus simple consiste à utiliser la méthode printf() et une chaîne de format. Cependant, avec cette méthode, les décimales de la chaîne de format ne peuvent pas être modifiées dynamiquement. Pour gérer cela, la bibliothèque C++ iomanip dispose de la méthode set précision(), qui obtient le nombre de décimales pour arrondir un nombre à virgule flottante. Parfois, nous devons arrondir un nombre à virgule flottante à l'entier le plus proche (0 décimale), dans ce cas nous pouvons utiliser la méthode round() de la bibliothèque cmath en C++.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!