Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP C C++ C# AWS W3.CSS HOW TO BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS DSA TYPESCRIPT ANGULAR ANGULARJS GIT POSTGRESQL MONGODB ASP AI R GO KOTLIN SWIFT SASS VUE GEN AI SCIPY CYBERSECURITY DATA SCIENCE INTRO TO PROGRAMMING INTRO TO HTML & CSS BASH RUST TOOLS

C++ Tutorial

C++ HOME C++ Intro C++ Get Started C++ Syntax C++ Output C++ Comments C++ Variables C++ User Input C++ Data Types C++ Operators C++ Type Conversion C++ Strings C++ Math C++ Booleans C++ If...Else C++ Switch C++ While Loop C++ For Loop C++ Break/Continue C++ Arrays C++ Structures C++ Enums C++ References C++ Pointers C++ Memory Mgmt

C++ Functions

C++ Functions C++ Function Parameters C++ Function Overloading C++ Scope C++ Recursion C++ Lambda

C++ Classes

C++ OOP C++ Classes/Objects C++ Class Methods C++ Constructors C++ Destructors C++ The this Pointer C++ Access Specifiers C++ Encapsulation C++ Friend Functions C++ Inheritance C++ Polymorphism C++ Operator Overload C++ Templates

C++ Files

C++ Files

C++ Date

C++ Date

C++ Errors

C++ Errors C++ Debugging C++ Exceptions C++ Input Validation

C++ Problem Solving

C++ Problem Solving C++ Build the Logic C++ Test Cases

C++ Data Structures

C++ Data Structures & STL C++ Vectors C++ List C++ Stacks C++ Queues C++ Deque C++ Sets C++ Maps C++ Unordered Map C++ Unordered Set C++ Iterators C++ Algorithms

C++ Namespaces

C++ Namespaces

C++ Projects

C++ Projects

C++ Cert

C++ Certificate

C++ How To

C++ How Tos

C++ Examples

C++ Examples C++ Real-Life Examples C++ Compiler C++ Exercises C++ Quiz C++ Code Challenges C++ Practice Problems C++ Syllabus C++ Study Plan

C++ Reference

C++ Reference C++ Keywords C++ <algorithm> C++ <cctype> C++ <cmath> C++ <cstdlib> C++ <cstring> C++ <ctime> C++ <deque> C++ <fstream> C++ <iomanip> C++ <iostream> C++ <list> C++ <map> C++ <memory> C++ <queue> C++ <random> C++ <set> C++ <sstream> C++ <stack> C++ <stdexcept> C++ <string> C++ <unordered_map> C++ <unordered_set> C++ <vector>


C++ Decimal Precision


Share

Decimal Precision

When you print a decimal number with cout, the output does not always look the way you expect. For example, 9.0 is printed as 9:

Example

double x = 9.0;
double y = 19.990;
double z = 3.14159265;

cout << x << "\n";  // 9
cout << y << "\n";  // 19.99
cout << z << "\n";  // 3.14159

Try it Yourself »

This is because cout uses these rules by default:

  • It shows at most 6 digits in total (before and after the decimal point), and rounds the rest.
  • It removes zeros at the end of the decimals. If only zeros are left, the decimal point is removed too.

The value itself is not changed. x still holds 9.0. Only the way it is printed is different.

Note: Very large numbers are printed in scientific notation. For example, 1234567.0 is printed as 1.23457e+06, which means 1.23457 times 106.


Set Decimal Precision

To choose how many decimals are shown, use fixed and setprecision(). setprecision() is found in the <iomanip> library.

Note: This is the first time we use a library other than <iostream>. In the Syntax chapter, you learned that #include <iostream> lets you use cout. In the same way, #include <iomanip> lets you use setprecision(). Add it at the top of your program, below #include <iostream>:

Example

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
  double x = 9;
  double y = 9.5;

  cout << fixed << setprecision(2);
  cout << x << "\n";  // 9.00
  cout << y << "\n";  // 9.50
  return 0;
}

Try it Yourself »

fixed means "always show a fixed number of decimals", and setprecision(2) sets that number to 2. Now 9 is printed as 9.00, which is useful for things like prices.

Note: fixed and setprecision() keep working for all the numbers you print after them, not only the first one.



Rounding

setprecision() does not just cut off the extra digits. It rounds the number to the nearest value:

Example

double myNum = 3.14159;

cout << fixed << setprecision(2) << myNum << "\n";  // 3.14
cout << fixed << setprecision(3) << myNum << "\n";  // 3.142 (rounded up)
cout << fixed << setprecision(0) << myNum << "\n";  // 3

Try it Yourself »


setprecision() Without fixed

If you use setprecision() without fixed, the number sets how many digits are shown in total, not only after the decimal point:

Example

double myNum = 3.14159;

cout << setprecision(3) << myNum;  // 3.14 (3 digits in total)

Try it Yourself »

This is easy to mix up. If you want a number of decimals, like for a price, always use fixed together with setprecision().


Visualize Decimal Precision

Choose an option below to see how 3.14159 is printed:

Code


Output

Explanation




Free account

Track your progress

XP earned 0 Day streak 0 Spaces 0 League —

New

Learn in Adventure Mode W3Schools Adventure App

Coding fundamentals as bite-sized lessons and challenges.

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
sales@w3schools.com

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
help@w3schools.com

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookies and privacy policy.

Copyright 1999-2026 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.