在C中输入双精度浮点数

时间:2016-06-16 11:39:56

标签: c input floating-point scanf

我刚刚开始学习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);

2 个答案:

答案 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;