scanf – 读取时限制小数位

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

那么有什么方法可以在使用scanf函数读取时限制浮点值中的小数位数?

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

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

如果你查看文档,它说

scanf :

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

%[*][width][length]specifier

并将其与printf进行比较:

格式说明符遵循此原型:

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

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

f1 = round( f1 * 1000.0 ) / 1000.0scanf无法帮助。 顺便说一下,使用double而不是float