【发布时间】:2015-07-27 14:10:27
【问题描述】:
如何在 C 语言中使用 scanf 获取小数点后一位 (0.1) 的浮点数?例如用户可以输入 3.25405... 但在变量中只有 3.2 会被保存。我怎样才能做到这一点 ?这与舍入浮点数不同。
【问题讨论】:
-
尝试输入
0.1并在调试器中查看结果。你可能会感到惊讶。 -
一般来说,永远不要通过
scanf()阅读用户输入。该函数只是没有提供足够的功能来从错误条件中正常恢复,例如格式不匹配等。读取整行输入,然后在内存中解析它(例如通过strtod())。 -
您可能无法一步完成:scanf(也不是 fscanf 或任何变体,也不是底层的 strtod)函数没有任何规定来执行小数部分的部分解释,它会尝试匹配尽可能多的数字。
-
一旦你有了这个值,你打算如何使用它?如果您总是使用一个小数点,最好使用定点格式的
int。 -
除非你解释为什么它会不同于舍入一个浮点数,否则我会投票结束这个问题作为重复。
标签: c floating-point scanf