如何在C ++中打印特定位数的位数?例如,总共打印8位数字(小数点之前+之后的组合)



如何在 C++ 中打印特定位数?例如,总共打印8位数字(小数点前后合并(编辑:为了进一步澄清,setprecision 在我有十进制数字要显示时设置数字。我想将整数 30 也显示为 30.000000,以 8 位数字表示。设置精度命令将固定编号。小数点后的数字,我不想这样。简而言之,我想要 c 命令 printf("%8d",N( 在C++中的替代方案。

您可以使用

包含iomanipfixed中的setprecision()函数来执行此操作,例如:

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    double d = 1000;
    double t = d;
    int dc=0;
    while(t>0.9)
    {
        dc++;
       t= t/10;
    }
    cout<<"dc:"<<dc<<endl;
    cout << fixed;
    std::cout << std::setprecision(dc);
    std::cout << d;
    return 0;
}

setprecision()不会每次都正常工作,因此您也必须使用fixed

你应该使用 c++ 标头iomanip你想要的是 setprecision() 函数:

std::cout << std::setprecision(5) << 12.3456789 << std::endl;

输出12.346 .它还有其他修饰符,你可以在这里
找到编辑
如果要打印尾随的 0,则还需要使用 std::fixed 。这表示使用该位数,无论它们是否有效。如果您希望这是总数,您可以计算出数字的大小,然后根据该大小更改您设置的精度,如下所示:

#include <iostream>
#include <iomanip>
#include <cmath>
int main()
{
    double input = 30;
    int magnitude = 0;
    while(input / pow(10, magnitude))
    {
        ++magnitude;
    }
    std::cout << std::fixed << std::setprecision(8 - magnitude) << input << std::endl;
    return 0;
}

这将返回30.000000 。您还可以通过输出到字符串,然后显示该字符串来执行类似的操作。

最新更新