【发布时间】:2021-10-17 10:51:17
【问题描述】:
有没有办法让用户输入,然后用它来决定输出数字的精度应该是多少?
我的意思是我有一个函数来获得用户想要的精度,然后我希望能够使用输入的数字来决定应该显示多少个小数位。通常在您创建程序时,您可以这样决定:printf("The number is: %0.2f", number);,但是 %0.2f 是否也可以动态更改,以便用户可以决定它应该是 0.2、0.3、0.4 等吗?
【问题讨论】:
-
动态选择输出精度很简单,例如
prec = 5; printf("%.*f\n", prec, f);。 -
如果你想在用户输入时检测浮点数的精度,这有点棘手,而且没有标准功能,所以你必须自己做。请参阅this recent question 的答案。
-
最后,请注意,一旦您将用户的输入转换为
float或double变量,就很难(基本上不可能)发现用户最初输入它的精度, 因为这些数字在内部存储在 binary 中。例如,如果您输入 12.34 并将其存储在float中,则内部表示是相当于 12.340000152587890625 的二进制数,因此您无法判断用户输入的是 12.34 还是 12.3400001 还是 12.34000015 或类似的东西。