首页 > 解决方案 > 在 C++ 中格式化字符串时从双精度数中删除所有尾随零

问题描述

我想从双数中删除所有尾随零。我知道我可以std::setprecision()用来打印它,但我想修改实际数字,使其仅在小数点后两位数。

class Circle {
    private:
        double r, PI = 3.14159;
    public:
        Circle(double r) {
        this->r = r;
    }
        double area() {
            return PI * r * r;
        }
    double circumference() {
        return 2 * PI * r;
    }
        double getRadius() {
            return r;
        }
        string toString() {
            string str;
            str += "Circle{radius=" + to_string((r)) + "}";

            return str;
        }
    };

twoString()函数中,我只想将半径返回到两位小数,但是,在通过 2.5 后,我得到“Circle{radius=2.500000}”,同样,对于 4,我得到“Circle{radius=4.000000}”。我希望这里只有 4 个。

标签: c++stringclassdoubleprecision

解决方案


修改原始编号将不起作用,因为double应在您的平台中定义数据格式(通常为 IEEE754 格式)。

std::stringstream应该有帮助。它可以这样使用:

string toString() {
    std::stringstream ss;
    ss << "Circle{radius=" << r << "}";

    return ss.str();
}

推荐阅读