C/C++,将一个小浮点数截断为 2 个有意义的数字,并以科学的方式表达
C/C++, truncating a small float number to 2 meaningful digits and expressing it in a scientific way
我得到了一些小的浮点数,应该附加到文件名中。然后,这些文件将显示在监控网站中。这样,人们可以仅通过文件名获得实验运行的简要印象。一个典型的小数字(真空压力值)是:
1.2528168904794602e-07.
在 C/C++ 中,我希望它可以被截断为科学数字,例如
1.3e-07
此 1.3e-07 将是文件名的一部分。
我没有尝试在屏幕上打印值。因此,使用以下 iostream 命令可能不是一个选项。
std::cout.precision(2);
有什么建议吗?谢谢!
使用 precision
和 setf
的组合:
这执行了您想要的操作:
#include <iostream>
using namespace std;
int main(){
double pressure = 1.2528168904794602e-07;
cout.setf(ios::scientific);
cout.precision(1);
cout << "pressure: " << pressure << endl;
}
如果要写入文件,仍可以使用precision
:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
double pressure = 1.2528168904794602e-07;
ofstream fout("out.txt");
fout.setf(ios::scientific);
fout.precision(1);
fout << "pressure: " << pressure << endl;
fout.close();
}
下面是使用该值写入输出文件的示例,该值作为文件名的一部分(使用 stringstream
创建文件名):
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main(){
double pressure = 1.2528168904794602e-07;
ostringstream sout;
sout.precision(1);
sout.setf(ios::scientific);
sout << "Prefix" << pressure << ".txt";
ofstream fout(sout.str().c_str());
fout << "Writing to outfile" << endl;
fout.close();
}
上面的代码创建一个名为 Prefix1.3e-07.txt
的文件
您可能会如何处理我们不能使用precision
的值?
感谢所有帖子!我实际上是通过搜索弄清楚的。
这是我的解决方案:
...
string new_file_name;
stringstream ss (stringstream::in | stringstream::out);
ss << std::setprecision(1) << std::scientific << pressure_value ;
string stest = ss.str();
new_file_name += stest ;
...
它与我的脚本不完全相同,但它是等效的。
相关文章:
- 在C++中,使用带有 std::optional 参数的函数<T>来表示可选参数是否有意义?
- API 返回智能指针的 std::optional 以明确指定指针可能为 null 是否有意义?
- 从头开始为应用程序创建 docker 映像是否有意义?
- 在c++中,如果首先禁止默认构造,那么禁止复制构造有意义吗
- sizeof(函数)有意义吗?
- 二进制模式 + 格式化文本操作或文本模式 + 二进制数据操作 - 有意义吗?
- 插入向量时,使用lambda的返回而不是函数的返回是否有意义?
- 在 C++17 中使用 const std::string& 参数有意义吗?
- 基础类模板参数的有意义名称
- 内联这个函数,确实有意义
- 将 final 关键字添加到没有基类(未派生)的类中的虚函数是否有意义
- 左移负整数为零是否有意义?
- 是否有一个上下文表达式`a.b :: c`有意义
- 是否有一些有意义的统计数据来证明保持有符号整数算术溢出未定义是合理的
- 将可选与reference_wrapper相结合是否有意义?
- 函数返回rvalue参考是否有意义
- 将 [[noreturn]] 添加到主函数是否有意义
- 在shared_ptr的自定义删除器中检查 nullptr 是否有意义?
- YAML-CPP 节点诊断有意义的错误
- C/C++,将一个小浮点数截断为 2 个有意义的数字,并以科学的方式表达