c - 将一个 int 乘以一个 int 得到一个浮点数返回 0 语言是 C
问题描述
lotacao_abs = (viagens[j].lotacao / 100) * navios[i].capacidade;
lotacao_abs
是一个浮点数,viagens[j].lotacao
是int
一个结构(是的,它有我检查过的正确值),navios[i].capacidade
也是一个int
(也有我检查过的正确值)。
发生的事情是 的值lotacao_abs
总是0
。这部分代码的想法是给我绝对值而不是百分比,viajens[j].lotacao
有百分比并且navios[j].capacidade
有船的最大容量,假设百分比是 68%,最大容量是34,000
,那么lotacao_abs
应该是23,120
,但它反而是0
。
解决方案
子表达式viagens[j].lotacao/100
正在执行整数除法。因此,如果viajens[j].lotacao
小于 100,则结果将为 0。
其中一个参数必须具有浮点类型才能执行浮点除法。最简单的方法是使用100.0
which 是浮点常量而不是100
整数常量。
lotacao_abs=(viagens[j].lotacao/100.0) * navios[i].capacidade;
推荐阅读
- python - 使用 BeautifulSoup 抓取多个(市场指数)网站
- swift - 从其超类创建一个子类 - Swift
- go - 用“-”替换字符串中的空格。同时使用 fmt.Scan 进行用户输入。(哥朗)
- php - 在表单提交时,将表单数据发送到数据库
- tensorflow - tensorflow model.evaluate 和 model.predict 非常不同的结果
- azure-data-factory-2 - 在 Azure 数据工厂中计算哈希
- sql - 对连续的行序列进行分组
- jquery - 提交前预览表单数据
- matlab - 旋转matlab颜色条刻度标签
- vb.net - 如何使用VB和itextsharp在标题页面后在固定点添加表格