[英]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.