【问题标题】:How to let user decide how many decimal places they want printed in their float?如何让用户决定他们想要在浮点数中打印多少个小数位?
【发布时间】:2016-10-31 02:38:54
【问题描述】:

如何让程序允许用户选择他们希望在浮点值中打印多少个小数位?

比如下面的代码

#include <stdio.h>
int main(){
    float x;
    x = 0.67183377;
    printf("%.2f\n", x);
}

会给我们一个0.67 的输出。但是,如果用户想查看完整的数字,或者到小数点后第四位怎么办。他们将如何做到这一点?

【问题讨论】:

  • 参见printf(): printf("%.*f\n", n, x); 其中n 是一个包含要打印的小数位数的int。请注意,float 只能保存大约 6-7 个十进制数字;示例中的第 8 和第 9 个将在很大程度上无关紧要。

标签: c floating-point printf


【解决方案1】:

详情请见printf()。使用:

printf("%.*f\n", n, x);

其中n 是一个int,其中包含要打印的小数位数。请注意,float 只能保存大约 6-7 个十进制数字;示例中的第 8 个将在很大程度上无关紧要。

#include <stdio.h>

int main(void)
{
    float x = 0.67183377;
    for (int n = 0; n < 10; n++)
        printf("%.*f\n", n, x);
    return(0);
}

示例输出:

1
0.7
0.67
0.672
0.6718
0.67183
0.671834
0.6718338
0.67183375
0.671833754

该值在传递给printf() 之前被转换为double,因为所有可变参数函数都会发生这种情况。当x 更改为double 时,输出为:

1
0.7
0.67
0.672
0.6718
0.67183
0.671834
0.6718338
0.67183377
0.671833770

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-15
    • 2021-07-11
    • 1970-01-01
    • 2011-02-02
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多