This is probably an easy one, but is the right way to calculate volume for a sphere in C++? My getArea()
seems to be right, but when I call getVolume()
it doesn't output the right amount. With a sphere of radius = 1
, it gives me the answer of pi
, which is incorrect:
double Sphere::getArea() const
{
return 4 * Shape::pi * pow(getZ(), 2);
}
double Sphere::getVolume() const
{
return (4 / 3) * Shape::pi * pow(getZ(), 3);
}
You're using integer division in (4 / 3)
. Instead, use floating point division: (4.0 / 3.0)
.
4/3
is 1, because integer division only produces integers. You can confirm this by test code: std::cout << (4/3) << std::endl;
.
In (4 / 3)
, these are both integers so you get integer division. That means the result will be truncated (1.333... becomes 1). Make one of them a double so the other gets promoted to a double during division, yielding a correct result.
I prefer to use (4.0 / 3.0)
.
(4/3)是一个整数表达式,因此被截断为1.尝试(4.0 / 3.0)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.