在c ++中格式化double值

时间:2015-10-14 12:48:57

标签: c++

我有一个double值,我想限制它的精度,然后转换为字符串。

double dblValue = 50.0000018963;

我需要将其转换为50.0和字符串格式。

2 个答案:

答案 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步:获利!