我的问题是:我想将一个最多保留 2 位小数的 float 写入一个字符串中,然后在数字后面不带几个 0 的情况下打印它。
我目前的做法:
Values Material; // Class 'Values', Object 'Material'
Material.Temp = 15.56; // 'Temp' = float
string ss = to_string(Material.Temp); // Conversion to string
const char* cNumber = ss.c_str(); // Conversion to const char
HPDF_Page_ShowText(page, cNumber);
打印出:15.56000000
HPDF_Page_ShowText
是开源库 libharu 用于创建 PDF 文档的命令。它需要 (page-object, *const char)
。这就是必须首先将字符串转换为 const char*
的原因。
我真的在网上搜索过类似的问题,但没有找到适合我的。
最佳答案
使用 std::stringstream和 std::setprecision()功能结合 std::fixed流操纵器:
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
int main(){
float myfloat = 15.56f;
std::stringstream ss;
ss << std::fixed << std::setprecision(2) << myfloat;
std::string s = ss.str();
std::cout << s;
}
const char*
变量可以通过以下方式获取:
const char* c = s.c_str();
更新:
首选 std::ostringstream
,因为该流仅用于输出。
关于C++浮点到特定长度的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46089298/