c - float 忽略 c 中小数点后的数字
问题描述
我正在尝试使用边缘是随机的苍鹭公式(我使用 u 而不是 s)找到三角形的面积,并且当边缘的总和为奇数时,我的浮点数会忽略小数点后的数字。
这是我的代码的一部分:
srand(time(0));
triangle_1.a = rand() % 50;
triangle_1.b = rand() % 50;
triangle_1.c = rand() % 50;
do
{
triangle_1.a = rand() % 50;
triangle_1.b = rand() % 50;
triangle_1.c = rand() % 50;
}
while (triangle_1.a + triangle_1.b <= triangle_1.c | triangle_1.a + triangle_1.c <= triangle_1.b | triangle_1.b + triangle_1.c <= triangle_1.a);
float area, u;
u = (triangle_1.a + triangle_1.b + triangle_1.c) / 2;
area = sqrt(u * (u - triangle_1.a) * (u - triangle_1.b) * (u - triangle_1.c));
printf("%d, %d, %d, %f, %f", triangle_1.a, triangle_1.b, triangle_1.c, u, area);
这是输出:
38、37、36、55.000000、565.482117
因为 u 是 55 而不是 55.5,所以面积也不正确。关于为什么会发生这种情况的任何想法?
解决方案
推荐阅读
- django - 方法不允许 - Django Rest 框架
- javascript - Vue:在计算属性中避免 TypeError 的最佳方法是什么
- scope - 使用 Jupyter 单元魔法时的环境变量范围
- c# - unity3D ScrollView 动态宽度
- pandas - relativedelta - 根据列值添加月数
- php - 无法获得中间件授权工作
- android - 如何使用上一个和下一个按钮切换片段?
- java - 使用 IText 或 PDFBox 在 java 中的另一个 PDF 文件之间合并 PDF 文件
- c++ - 从在线服务器上的计算机上传文件
- java - 使用 post 方法后信息不会出现在其他页面中