c++ - 在 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();
}
推荐阅读
- linux - buildroot 与使用相同的 buildroot 生成的外部工具链
- html - CSS responsive layout with an image and a side section
- ios - Swift将UnionValue JSON转换为对象并循环
- package - How to overcome issue regarding loading Notation package into Wolfram?
- angular - Angular Firebase Cloud Messaging got service worker problems
- oracle - Oracle 授予调试权限而不进行更改
- flutter - Sliver 应用栏无法正确显示 - Flutter
- java - 使用查询 DSL 时可以在表旁边定义数据库名称吗?
- flutter - #Flutter_Camera Can't handle focus in camera package flutter
- r - plotKML - 图层名称、标签大小和图层层次结构