How to round off a floating point value to two places. For example, 5.567 should become 5.57 and 5.534 should become 5.53
First Method:- Using Float precision
#include <stdio.h> int main()
{ float var = 37.66666;
// Directly print the number with .2f precision
printf ( "%.2f" , var);
return 0;
} |
37.67
Time Complexity: O(1), as the execution time does not depend on the size of the input.
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;
} |
Output: 37.67
Time complexity:
The round function only performs a few basic arithmetic operations, so its time complexity is constant or O(1).
Space complexity:
The round function creates a single float variable named value, so its space complexity is constant or O(1).
Third Method: using sprintf() and sscanf()
#include <iostream> using namespace std;
float round( float var)
{ // we use array of chars to store number
// as a string.
char str[40];
// Print in string the value of var
// with two decimal point
sprintf (str, "%.2f" , var);
// scan string value in var
sscanf (str, "%f" , &var);
return var;
} int main()
{ float var = 37.66666;
cout << round(var);
return 0;
} |
Output: 37.67