<分区>
如何在 C 语言中使用 scanf 获取小数点后一位 (0.1) 的 float ?例如用户可以输入 3.25405... 但在变量中只有 3.2 会被保存。我怎样才能做到这一点 ?这与舍入 float 不同。
标签 c floating-point scanf
<分区>
如何在 C 语言中使用 scanf 获取小数点后一位 (0.1) 的 float ?例如用户可以输入 3.25405... 但在变量中只有 3.2 会被保存。我怎样才能做到这一点 ?这与舍入 float 不同。
最佳答案
使用 fgets()
读取并对缓冲区进行后处理。 @DevSolar
char buf[100];
if (fgets(buf, sizeof buf, stdin) == NULL) Handle_EOF();
char *p = strchr(buf,'.');
if (p && isdigit(p[1])) p[2] = 0;
char *endptr;
double y = strtod(buf, &endptr);
...
更好的是提醒用户忽略了额外的输入。
if (p && isdigit(p[1])) {
if (p[2] && p[2] != '\n') puts("Extra input ignored.");
p[2] = 0;
}
char *endptr;
double y = strtod(buf, &endptr);
关于c - 输入小数点后一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31655445/