A double cannot hold a 1.555, it ends up as 1.55499999999999993782 or something like that. Try %.30lf to see further down in decimals. See https://0.30000000000000004.com/ Answer from oh5nxo on reddit.com
🌐
W3Schools
w3schools.com › c › ref_math_round.php
C Math round() Function
C Examples C Real-Life Examples C Exercises C Quiz C Code Challenges C Compiler C Syllabus C Study Plan C Interview Q&A C Certificate ... printf("%f", round(0.60)); printf("%f", round(0.40)); printf("%f", round(5)); printf("%f", round(5.1)); printf("%f", round(-5.1)); printf("%f", round(-5.9)); Try it Yourself »
🌐
Reddit
reddit.com › r/c_programming › how does the double rounding work?
r/C_Programming on Reddit: How does the double rounding work?
June 27, 2024 -

Let's say I have a code like this:

#include <stdio.h>
int main(void) {
    double x = 1.555;
    printf("3 decimal: %.3lf \n",x);
    printf("2 decimal: %.2lf \n",x);
    printf("1 decimal: %.1lf \n",x);
    return 0;
}

The expected output would be:

3 decimal: 1.555
2 decimal: 1.56
1 decimal: 1.6 

But instead I get:

3 decimal: 1.555
2 decimal: 1.55
1 decimal: 1.6 

Which seems wrong because it didn't round the second 5 to a 6, but it rounded the first 5 to a 6. Why is this happening?

Discussions

How do I round a double to one decimal?
Multiply by 10, round, divide by 10. It's worth noting that some decimal values can't be represented by a double. More on reddit.com
🌐 r/cpp_questions
18
5
October 9, 2023
Rounding in C
Have you considered simply trying the code out? More on reddit.com
🌐 r/C_Programming
37
0
May 8, 2024
How to round a double - C++ Forum
Helios, Thanks for the info, but it doesn't cover how to round a double one decimal place. It talks about rouding a double to an int. More on cplusplus.com
🌐 cplusplus.com
September 7, 2008
Round Function
I like to develop my formulae in a spreadsheet, before moving it into code. I often use round() in my spreadsheet work, and copied a formula using that to Arduino, not realizing that round() does not exist in the Arduino reference. I've seen some convoluted ways to make numbers round up or ... More on forum.arduino.cc
🌐 forum.arduino.cc
0
0
January 12, 2012
🌐
Microsoft Learn
learn.microsoft.com › en-us › cpp › c-runtime-library › reference › round-roundf-roundl
round, roundf, roundl | Microsoft Learn
July 9, 2025 - ===== Round a float roundf(2.5) is 3 roundf(-2.5) is -3 ===== Round a double round(2.499999900000000163657887242152355611324310302734375) is 2 round(-2.499999900000000163657887242152355611324310302734375) is -2 ===== Round a long double roundl(2.499999900000000163657887242152355611324310302734375) is 2 roundl(-2.499999900000000163657887242152355611324310302734375) is -2 · Math and floating-point support ceil, ceilf, ceill floor, floorf, floorl fmod, fmodf lrint, lrintf, lrintl, llrint, llrintf, llrintl lround, lroundf, lroundl, llround, llroundf, llroundl nearbyint, nearbyintf, nearbyintl rint, rintf, rintl
🌐
GeeksforGeeks
geeksforgeeks.org › c language › round-function-in-c
round() Function in C - GeeksforGeeks
July 5, 2024 - The round() function returns the rounded integer value as a double. The returned value is the nearest integer to the input number.
🌐
Cplusplus
cplusplus.com › reference › cmath › round
Round
double round (double x); float round (float x);long double round (long double x); double round (T x); // additional overloads for integral types ... Returns the integral value that is nearest to x, with halfway cases rounded away from zero.
🌐
Cppreference
cppreference.com › w › c › numeric › math › round.html
round, roundf, roundl, lround, lroundf, lroundl, llround, llroundf, llroundl - cppreference.com
May 23, 2024 - The largest representable floating-point values are exact integers in all standard floating-point formats, so round never overflows on its own; however the result may overflow any integer type (including intmax_t), when stored in an integer variable. POSIX specifies that all cases where lround or llround raise FE_INVALID are domain errors. The double version of round behaves as if implemented as follows:
🌐
Quora
quora.com › How-do-you-round-a-double-to-the-nearest-smaller-integer-in-C
How to round a double to the nearest smaller integer in C - Quora
There is a header/include file called “math.h” or cmath in some more modern compilers now - In this/these header/include files exist 2 functions you may use for this purpose - floor and ceil. They both take and return double data type values. floor() takes a number and basically rounds it down to the integer at or below it.
Find elsewhere
🌐
Fresh2Refresh
fresh2refresh.com › home › c programming tutorial › c – arithmetic functions › c – round() function
C round() function | C Arithmetic functions | Fresh2Refresh
September 23, 2020 - C round() function:round( ) function in C returns the nearest integer value of the float/double/long double argument passed to this function.
🌐
Scaler
scaler.com › home › topics › c round() function
C round() Function - Scaler Topics
March 27, 2024 - The C round() function is one of ... The round() function in C returns the nearest integer value (rounded value) of the given float, integer, or double number based on the decimal part of the number....
🌐
TutorialsPoint
tutorialspoint.com › c_standard_library › c_function_round.htm
C library - round() function
Following is the syntax of the C library function round() − · double round(double x); This function accepts only a single parameter − · x − This parameter is used to set the floating-point number to be rounded.
🌐
Reddit
reddit.com › r/c_programming › rounding in c
r/C_Programming on Reddit: Rounding in C
May 8, 2024 -

I have a question when it comes to rounding in C. Does it round up or down at .5? If it does round up, then does that mean that the smallest value of k in the code below can only be 1?

 int main()
{
    int k = 13;
    int i;
    for (i = 0; i < 8; i++) {
        printf("%d", (k%2));
        k >>= 1;
    }
    printf("%n");
}

🌐
Sololearn
sololearn.com › en › Discuss › 1122953 › how-can-i-round-a-double-number-in-c
How can I round a double number in c++? | Sololearn: Learn to code for FREE!
How can I do this? ... You have to first set the output as fixed, then set the precision to 2 decimal places. Something like this: double var = round(double * 100) / 100; std::cout << std::fixed << std::setprecision(2) << var; Unfortunately, ...
🌐
GeeksforGeeks
geeksforgeeks.org › c language › rounding-floating-point-number-two-decimal-places-c-c
Rounding Floating Point Number To two Decimal Places in C and C++ - GeeksforGeeks
May 21, 2024 - Space Complexity: O(1), as it only uses a fixed amount of memory to store a single float variable and does not allocate any dynamic memory. Second Method: Using integer typecast If we are in Function then how return two decimal point value ... #include <iostream> using namespace std; float round(float var) { // 37.66666 * 100 =3766.66 // 3766.66 + .5 =3767.16 for rounding off value // then type cast to int so value is 3767 // then divided by 100 so the value converted into 37.67 float value = (int)(var * 100 + .5); return (float)value / 100; } int main() { float var = 37.66666; cout << round(var); return 0; }
🌐
Cplusplus
cplusplus.com › forum › general › 4011
How to round a double - C++ Forum
September 7, 2008 - Easiest way #include <iomanip> cout << fixed << setprecision(1) << 9.09090901 << endl; and it's done ... I am a new member and this is my first post. Please excuse me iIf I am repeating anything posted here or elsewhere. While the original post in this thread did say that the rounded results ...
🌐
O'Reilly
oreilly.com › library › view › c-in-a › 0596006977 › re199.html
round C99 - C in a Nutshell [Book]
December 16, 2005 - Content preview from C in a Nutshell ... float x ); long double roundl( long double x ); The round() functions round a floating-point number to the nearest integer value, regardless of the current rounding direction setting in ...
Authors   Peter PrinzTony Crawford
Published   2005
Pages   618
🌐
Arduino Forum
forum.arduino.cc › projects › programming
Round Function - Programming - Arduino Forum
January 12, 2012 - I like to develop my formulae in a spreadsheet, before moving it into code. I often use round() in my spreadsheet work, and copied a formula using that to Arduino, not realizing that round() does not exist in the Arduino reference. I've seen some convoluted ways to make numbers round up or down, but find the generic C/C++ Round function, round(), works just fine: a = round(b); If b = 12.5, then a = 12, but if b = 12.6, then a = 13. http://www.codecogs.com/reference/computing/c/math.h/round.p...