c,c++对输出浮点数小数位数的控制

例题:https://ac.nowcoder.com/acm/contest/85/A
来源:牛客网

题目描述(建议直接看原题)

Etéreo 是个爱学习的好孩子。在年假期间,他依然热情于数学。他最近发现了一个高大上的东西:Θ=lim⁡ν→∞(1+1ν)ν\Theta = \lim_{\nu \rightarrow \infty} (1+\frac{1}{\nu})^\nuΘ=limν→∞​(1+ν1​)ν
他觉得这里的 Θ\ThetaΘ 非常的厉害!然后他又告诉你:
Ψ=Θ×Θ×Θ×⋯×Θ⏟α个Θ\Psi = \underbrace{\Theta \times \Theta \times \Theta \times \cdots \times \Theta}_{\alpha \text{个} \Theta}Ψ=α个ΘΘ×Θ×Θ×⋯×Θ​​
Ω=Ψ+Ψ+Ψ+⋯+Ψ⏟β个Ψ\Omega = \underbrace{\Psi + \Psi + \Psi + \cdots + \Psi}_{\beta \text{个} \Psi}Ω=β个ΨΨ+Ψ+Ψ+⋯+Ψ​​
他会告诉你 α\alphaα 和 β\betaβ ,想请你告诉他 Ω\OmegaΩ 的值。当然这是一个小数,所以请你在小数点后保留 γ\gammaγ 位。
Etéreo 是个“问题小子”,有很多询问,请你一一回答。 
注意,题中 Θ,Ψ,Ω\Theta, \Psi, \OmegaΘ,Ψ,Ω 都是实数。 

输入描述:

第一行一个整数 TTT ,表示 Etéreo 的询问个数。 
接下去 TTT 行,每行三个整数 α,β,γ\alpha, \beta, \gammaα,β,γ ,表示一个询问,意义同题目描述。 

输出描述:

输出共 TTT 行,每行一个小数,表示答案 Ω\OmegaΩ。

示例1

输入

复制

2
5 196 1
3 60 4

输出

复制

29089.0
1205.1322

备注:

1≤α≤101
1≤β≤2001
1≤γ≤51
1≤T≤5001
题中小数请尽量取精确值。

代码:

#include
using namespace std;
int main()
{
    double e=exp(1);
    int t;
    cin>>t;
    while(t--)
    {
        int a,b,c;
        cin>>a>>b>>c;
        double ans=1;
        while(a--)
            ans=ans*e;
        ans=ans*b;
        printf("%.*f\n",c,ans);
    }
    return 0;
}

 在这里汇总一下c,c++对输出浮点数小数位数的控制方法,还会有所补充。

设wei为题目给出输出位数。

1.c,c++

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

2.c++

cout<

setiosflags(ios::fixed)是用定点方式表示实数(默认六位)。

cout< 使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。

setiosflags(ios::scientific)是用指数方式表示实数(默认六位)。

cout< 如果如果setprecision(n)与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。

本文部分转载自:https://blog.csdn.net/liujiayu2/article/details/50070005

你可能感兴趣的:(c,c++对输出浮点数小数位数的控制)