user4904109
user4904109

Reputation:

Input double precision float in C

I just started learning C, and I need to take a floating-point input from the user with exactly two numbers after the decimal point and then print it, so I wrote this code:

#include <stdio.h>

int main(void){
    float x;
    scanf("%.2f", &x);
    printf("%f", x);
}

Now say I take 2.14 as input... I don't get 2.14 as output; I get 0.000000. What's wrong with my code??

NOTE: I want the input to be two numbers after the decimal point, and I don't want to do something like:

scanf("%f", x);
printf("%.2f", x);

Upvotes: 1

Views: 4251

Answers (2)

user5712794
user5712794

Reputation:

If you don't want to do any operation on your number, then use string. Then you enter the floating point number and display it easily.

If you want to perform any operation, my advice is to use the math library function roundf(). There is even more in that function, so you can round it to a bigger floating point with ceilf() or to a smaller one with floorf().

Typically, you use the type of variable double for double precision:

x =  roundf(x * 100) / 100; // You use this functions like this
x =  ceilf(x * 100) / 100;
x =  floorf(x * 100) / 100;

Upvotes: 0

Boiethios
Boiethios

Reputation: 42769

Use roundf from math.h (solution from Rounding Number to 2 Decimal Places in C):

#include <stdio.h>
#include <math.h>

int main(void){
    float x;
    scanf("%f", &x);
    x = roundf(x * 100) / 100;
    printf("%.2f\n", x);
}

I must add that you suppose the double precision means that there are two digits after the comma; but in C, double precision is double type, vs float that is single precision.

Upvotes: 2

Related Questions