如何在C ++中打印特定位数的位数?例如,总共打印8位数字(小数点之前+之后的组合)
how to print specific number of digits in c++?For example ,printing 8 digits totally(before+after decimal point combined)
如何在 C++ 中打印特定位数?例如,总共打印8位数字(小数点前后合并(编辑:为了进一步澄清,setprecision 在我有十进制数字要显示时设置数字。我想将整数 30 也显示为 30.000000,以 8 位数字表示。设置精度命令将固定编号。小数点后的数字,我不想这样。简而言之,我想要 c 命令 printf("%8d",N( 在C++中的替代方案。
您可以使用
包含iomanip
和fixed
中的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
。您还可以通过输出到字符串,然后显示该字符串来执行类似的操作。
相关文章:
- 打印数字图案
- 错误含义;以二进制形式打印数字
- 列中打印数字时如何避免打印垃圾?
- C++ 在地板函数之后以十六进制打印数字
- C/C++ - 用于按顺序打印数字的 sem_t 类型的单个信号量
- 仅打印数字的小数位
- 在 c++ 列中打印数字
- 为什么 al_draw_textf() 打印数字而不是存储在字符串变量中的字母
- 如何使用递归按从 1 到 n 的升序打印数字,其中 n 在该函数的参数中给出
- 该程序如何反向打印数字的数字?
- C 以升级循环时按升序打印数字
- 如何使用C 中的printf打印数字列表
- 为什么使用算术而不是bitest以二进制形式打印数字更快
- 为什么不按升序打印数字
- 为什么这段代码不能正常打印数字?
- 尝试优化和理解打印数字除数的递归函数的运行时
- 我希望程序打印数字 0 到 99,但是当我运行代码时,我看到 100 行 99
- C++程序仅在打印数字时才有效
- 只有在没有重复数字的情况下才打印数字
- 不能算出这个按数字顺序打印数字的c++小程序的最后一个