我刚刚开始学习C,我需要从用户那里获取小数点后面两个数字的浮点输入,然后打印出来,所以我写了这段代码:
#include <stdio.h>
int main(void){
float x;
scanf("%.2f", &x);
printf("%f", x);
}
现在说我把2.14作为输入...我没有得到2.14作为输出;我得到0.000000。我的代码出了什么问题??
注意:我希望 输入 是小数点后的两个数字,我不想做类似的事情:
scanf("%f", x);
printf("%.2f", x);
答案 0 :(得分:2)
使用Array.prototype
中的roundf
(来自Rounding Number to 2 Decimal Places in C的解决方案):
math.h
我必须补充一点,你认为双精度意味着逗号后有两位数;但在C中,双精度为#include <stdio.h>
#include <math.h>
int main(void){
float x;
scanf("%f", &x);
x = roundf(x * 100) / 100;
printf("%.2f\n", x);
}
类型,而double
为单精度。
答案 1 :(得分:0)
如果您不想对您的号码进行任何操作,请使用字符串。然后输入浮点数并轻松显示。
如果你想执行任何操作,我的建议是使用数学库函数roundf()。在该函数中还有更多功能,因此您可以使用ceilf()将其舍入到更大的浮点,或者使用floorf()将其舍入到更小的浮点。
通常,您使用变量类型double
来实现双精度:
x = roundf(x * 100) / 100; // You use this functions like this
x = ceilf(x * 100) / 100;
x = floorf(x * 100) / 100;