scanf - 读取时限制小数位

时间:2015-03-17 09:24:01

标签: c scanf format-specifiers

我知道如何在printf(%x.x)中打印值时限制小数和整数, 在我的场景中,我想在从控制台读取它时实现它。

那么有没有办法在使用scanf函数读取时限制浮点值中的小数位数?

我在下面尝试过,在编译时没有显示任何错误,但总是得到0值

float f1;
.
.
scanf("%.3f",&f1);
printf("%3.3f\n",f1);  

2 个答案:

答案 0 :(得分:4)

如果您查看文档,则说明

scanf

  

scanf的格式说明符遵循以下原型:

     

%[*][width][length]specifier

并将其与printf进行比较:

  

格式说明符遵循此原型:

     

%[flags][width][.precision][length]specifier

您会看到,scanf中没有precision字段。所以我想舍入(或者转换为int来切割数字)是唯一的方法。

答案 1 :(得分:0)

f1 = round( f1 * 1000.0 ) / 1000.0scanf无法帮助。顺便说一句,请使用double代替float