繁体   English   中英

在 C++ 中格式化字符串时,从 double 中删除所有尾随零

[英]Remove all trailing zeros from a double while formatting in a string in 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 个。

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

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

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

    return ss.str();
}

或者你可以这样做:

rad = (r * 100) / 100;

然后在您的打印方法中使用 rad 而不是 r 。 这会将其截断为 2 个小数位。

如果你想圆,使用

rad = ceilf(r * 100) / 100;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM