开发者

Assigning a float value to variable

开发者 https://www.devze.com 2023-03-29 15:50 出处:网络
I want to store 1.222 in the variable a.But when i print it is showing me 1.222000 which means that the variable a is stored as 1.222000.But i want to store the value as 1.222 in

I want to store 1.222 in the variable a.But when i print it is showing me 1.222000 which

means that the variable a is stored as 1.222000.But i want to store the value as 1.222 in

a. and also i want only 1.22 to be copied to b when assign a=b. Please help me to

understand how开发者_开发知识库 to do it.

int main()
{
    float a=1.222,b;
    b=a;//(but b=1.22 and not b=1.222) how to cut the last number 2
    printf("%f\t%f",a,b);
    return 0;
}


You can't simply tell a float to lose some digits of precision during an assignment, you'll have to do some type casting to get the intended result. For instance, to preserve only 2 digits of precision:

int main()
{
    float a=1.222,b;
    b= ((long)(a * 100)) / 100.0;
    printf("%f\t%f",a,b);
    return 0;
}


You can't easily change the storage value, as that's the amount of allocated memory, and that's determined by the data type and system. To print two decimal places, use

printf("%.2f, %.2f", a, b);


You can't change out it is stored and your issue has nothing to do with how it is stored. You have a printing issue.

If you want to remove the extra zeroes, change %f to %g. But this will print 1.222.

If you want to print 1.22 and not 1.222 then change it to %.2f instead of %f.


If you want to round the number itself:

b=round(100*a)/100;
0

精彩评论

暂无评论...
验证码 换一张
取 消