c - 输入小数点后一位

标签 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/

相关文章:

计算一个程序所用的时间

c - 为什么编译后的代码在 linux 的 windows 中创建损坏的文件工作正常

c++ - 使用 epsilon 将 double 与零进行比较

C语言读取分栏文本文件

c - epoll_data_t 问题(特别是关于 C 数据类型的问题)

c - 如何使用 scanf 检查 '\n'

javascript - JavaScript 中的大数

c - 限制纬度和经度值的模数

c - 使用 getchar() 而不是 scanf() 的问题

c - scanf 字符串 - C 语言