设置精度 + 固定 - 没有不必要的零的打印值
setprecision + fixed - printing value without unnecessary zeros
以下代码:
double x = 3.14;
double y = 3.14159265359;
cout<<fixed<<setprecision(6)<<x<<", "<<y<<endl;
打印件: 3.140000, 3.141593
我想打印没有不必要的零的值:3.14, 3.141593 如何在不使用字符串和字符串流类的情况下执行此操作?
当既不选择固定格式也不选择科学格式时,setprecision
的含义是要输出的所有数字的数量(而不仅仅是在点之后)。
因此,这应该适合您
double x = 3.14;
double y = 3.14159265359;
cout<<setprecision(7)<<x<<", "<<y<<endl;
输出:
3.14, 3.141593
您可以使用cmath
来计算整数部分的位数,如下所示:
但如果数字小于 0.1 将是错误的
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main(){
double a = -123.456789;
double b = 4567.45;
if (a > 1 || a < -1){
cout << setprecision(5 + int(log10(fabs(a)) + 1)) << a << endl; //anser is -123.45679
}
else {
cout << setprecision(5) << a << endl; // if a = 0.0123456 answer will be 0.012347
}
if (b > 1 || b < -1){
cout << setprecision(5 + int(log10(fabs(b)) + 1)) << b << endl; //anser is 4567.45
}
else {
cout << setprecision(5) << b << endl;
}
}
相关文章:
- 在循环C++中指定字符串之后,不会打印该字符串
- 用callgrind追踪不必要的副本
- 不必要的C++代码最终会出现在我完成的程序中吗?
- 总和的不必要行为C++?
- C++:将初始化的对象传递给另一个类的构造函数;需要不必要的构造函数吗?
- 我用字符串做了一个C++构造函数,但它不会打印出字符串
- 在这种情况下,使用 string_view 是否会导致不必要的字符串复制?
- 此程序不会打印整个字符串
- 为什么 c++ 不能打印向量 B[0]?
- 从用户那里获得无限量的输入,而不是打印最大的3个,而不使用数组
- std::mutex::lock() 产生奇怪(和不必要的)ASM 代码
- C++第一个cout将不会打印
- wcout不会打印正确的单引号
- 使用ifstream时,被调用文件中的数据不会打印
- 如何在插入排序中使用 replace() 使语句变得不必要
- C 包装器C++库周围没有不必要的头文件
- 编译器是否消除了不必要的原子?
- 为什么 c++ 不将 2/3 打印为 0.666667?
- 链表不会打印最大值
- 设置精度 + 固定 - 没有不必要的零的打印值