我有一个double值,我想限制它的精度,然后转换为字符串。
double dblValue = 50.0000018963;
我需要将其转换为50.0和字符串格式。
答案 0 :(得分:3)
在C ++中,您可以使用std :: stringstream和precision属性:
#include <iostream>
#include <sstream>
#include <string>
int main() {
double d = 50.0123456789;
std::string s;
std::stringstream sstream;
sstream.setf(std::ios::fixed);
sstream.precision(1);
sstream << d;
s = sstream.str();
std::cout << d << std::endl;
std::cout << s << std::endl;
return 0;
}
注意,精度继承自std :: ios_base,所以std :: cout也有。如果您只想输出此值,则可以将std::cout.precision()
设置为1。
此外,您还可以找到更多相关信息 http://www.cplusplus.com/reference/ios/ios_base/precision/和 http://www.cplusplus.com/reference/sstream/stringstream/
答案 1 :(得分:0)
查看sprintf
的文档 sprtintf(yourchararrayORstring, "%.2f", dblValue);
注意:这只会将带有2个精度点的双精度写入字符串,而不是舍入或修改为dblValue
或按照Cory的建议
第1步:std::round
第2步:std::to_string
第3步:????第4步:获利!