scanf-读取时限制小数位数

scanf-读取时限制小数位数,c,scanf,format-specifiers,C,Scanf,Format Specifiers,我知道在printf(%x.x)中打印值时如何限制小数和整数, 在我的场景中,我希望在从控制台读取itslef时实现这一点 那么,在使用scanf函数读取时,有没有办法限制浮点值中的小数数 我在下面尝试过,编译时没有显示任何错误,但始终得到值0 float f1; . . scanf("%.3f",&f1); printf("%3.3f\n",f1); f1=round(f1*1000.0)/1000.0扫描无法帮助。顺便说一句,使用double代替floatf1=round(f1

我知道在printf(%x.x)中打印值时如何限制小数和整数, 在我的场景中,我希望在从控制台读取itslef时实现这一点

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

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

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

f1=round(f1*1000.0)/1000.0
<代码>扫描无法帮助。顺便说一句,使用
double
代替
float

f1=round(f1*1000.0)/1000.0
<代码>扫描
无法帮助。顺便说一句,如果您查看文档,请使用
double
而不是
float

:

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

%[*][宽度][长度]说明符

并将其与:

格式说明符遵循此原型:

%[flags][width][.precision][length]说明符


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

如果你查看文档,它会说

:

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

%[*][宽度][长度]说明符

并将其与:

格式说明符遵循此原型:

%[flags][width][.precision][length]说明符


您将看到,scanf中没有
精度
字段。因此,我猜四舍五入(或转换为int以切割数字)是唯一的方法。

scanf中的[*]和printf中的[flags]是什么意思?它在链接中它在scanf中的[*]和printf中的[flags]是什么意思?它在链接中