可以在 C 中动态更改浮点数的精度吗?

Can the precision of a floating point number be dynamically changed in C?

有没有办法让用户输入,然后用它来决定输出数字的精度应该是多少?

我的意思是我有一个函数来获得用户想要的精度,然后我希望能够使用输入的数字来决定应该显示多少位小数。通常当您创建程序时,您可以这样决定:printf("The number is: %0.2f", number);,但是 %0.2f 是否也可以动态更改,以便用户可以决定它是否应该是 0.2、0.3、0.4 等?

can that %0.2f also be dynamically changed so the user can decide if it should be 0.2, 0.3, 0.4, etc?

是的。

int prec = 2;
printf("The number is: %0.*f", prec, number);

prec 更改为您在运行时想要的内容。

将用户的输入读取为字符。测试用户的输入是否是可接受的形式。计算用户输入的位数。 (您可以根据自己的选择计算总位数或只计算小数点后的数字,如果有的话。)然后将记录的字符转换为浮点数(例如,使用 strtod 函数)。

打印时,使用%.*f固定小数点后的位数或%#.*g固定有效位数(数字中从第一个非零数字开始的总位数到最后一个非零数字)。对于这些选项中的任何一个,将两个参数传递给 printf:第一个是数字的数量,第二个是要打印的数字。