如何在scanf中只接受一定的精度(如此多的小数位)?

man*_*rma 5 c scanf

scanf()函数中我想只取十进制值.我们能实现它吗?例如,为了显示printf("%.2f",A) 最多两个小数位,我们使用我们如何为scanf()功能执行此操作.

Iha*_*imi 3

你不能这样做,scanf()如果你愿意的话,你可以读取特定数量的字符

float value;
scanf("%4f", &value);
Run Code Online (Sandbox Code Playgroud)

假设输入是

43.23
Run Code Online (Sandbox Code Playgroud)

它会读

43.2
Run Code Online (Sandbox Code Playgroud)

但你不能指定精度。

这没有意义,你能做的是

float value;
if (scanf("%f", &value) == 1)
    printf("%.2f\n", value);
Run Code Online (Sandbox Code Playgroud)

毕竟,精度受到二进制表示形式的限制,因此使其仅具有两位小数是没有意义的,因为在算术运算中它可能会四舍五入。