标签: c scanf format-specifiers
我知道如何在printf(%x.x)中打印值时限制小数和整数, 在我的场景中,我想在从控制台读取它时实现它。
那么有没有办法在使用scanf函数读取时限制浮点值中的小数位数?
我在下面尝试过,在编译时没有显示任何错误,但总是得到0值
float f1; . . scanf("%.3f",&f1); printf("%3.3f\n",f1);
答案 0 :(得分:4)
如果您查看文档,则说明
scanf:
scanf的格式说明符遵循以下原型: %[*][width][length]specifier
scanf的格式说明符遵循以下原型:
%[*][width][length]specifier
并将其与printf进行比较:
格式说明符遵循此原型: %[flags][width][.precision][length]specifier
格式说明符遵循此原型:
%[flags][width][.precision][length]specifier
您会看到,scanf中没有precision字段。所以我想舍入(或者转换为int来切割数字)是唯一的方法。
precision
答案 1 :(得分:0)
f1 = round( f1 * 1000.0 ) / 1000.0。 scanf无法帮助。顺便说一句,请使用double代替float。
f1 = round( f1 * 1000.0 ) / 1000.0
scanf
double
float