是否有任何截断
Is there any truncation?
我正在尝试计算如果我有面积为 4195065486 mm2 和厚度为 1 mm 的皮革,则可以制造的球的半径,从一个半径 = 1 mm 的小球开始,制造商可以将皮革包裹成球周围的多层。我写了这段代码来获取可以制作的球的半径以及皮革将保留的区域。(假设 pi=3.14159)。
double A, r;
const double pi=3.14159;
double AreaCalc(double r);
int main(){
A=4195065486.0;
r=1.0;
double final_r = AreaCalc(r);
cout<<final_r<<" "<<A<<" "<<endl;
return 0;
}
double AreaCalc(double r){
double ca;
ca=4*pi*r*r;
if (A-ca>=0.0){
A=A-ca;
AreaCalc(r+1);
}
else return r;
}
是否有任何截断或影响可能导致A
结果不准确?通过调试,我可以得到 A=12559904.940002432。
您在if
-分支中缺少一个return
,导致未定义的行为。
添加它:
return AreaCalc(r+1);
您应该为此收到编译器警告。
如果没有,请提高警告级别。
如果您这样做了,请开始注意警告。编译器的"将警告视为错误"选项是一个非常健康的选择。
(但是,就像@Henrik评论中建议的那样,数学是最好的解决方案。
相关文章:
- 是否有任何C++功能可以对地图进行排序?
- 在C++行尾写一个分号或多个分号是否会改变任何内容
- C++类型特征,以查看是否可以<uint32_t>对类型"K"的任何变量调用"static_cast(k)"
- 是否有任何建议来统一函数类型限定符并简化可恶的函数类型?
- GoogleMock是否仍然打算与任何测试框架一起使用?
- C++中是否有任何函数等同于python中字典的get函数?
- 用于检查值是否为其任何参数的帮助程序函数
- 在实践中,在运行时为零的乘法中是否有任何"lazy"评估
- 如何检测除整数以外的任何内容是否传递给我的类构造函数?
- 检查数组中的任何值是否等于添加到数组的当前值
- 检查从查询返回的任何行是否包含在字符串中的最高性能方法?
- 这些场景中的任何一个是否会造成内存泄漏
- Strchr不起作用,或者我需要一个替代方案来检查给定字符串中的任何字符是否是另一个字符串的一部分
- 如何查询范围中的任何位是否在 C++ std::bitset 中设置
- 默认情况下,任何函数是否能够就地工作
- 检查Eigen::矩阵的任何元素是否与零不同
- C++检查前 5 个或接下来的 5 个元素中的任何一个是否等于值
- 程序状态的任何变化是否构成可观察的行为?
- 检查循环中出现的任何条件是否已满足c++
- 是否可以遍历一个类以查看一个类或其任何基础是否具有特定的特征?