C int 浮点型铸造

新手上路,请多包涵

为什么 m 总是 = 0? someClass 的 x 和 y 成员是整数。

 float getSlope(someClass a, someClass b)
{
    float m = (a.y - b.y) / (a.x - b.x);
    cout << " m = " << m << "\n";
    return m;
}

原文由 el_pup_le 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 334
2 个回答

发生整数除法,然后将结果( _整数_)分配为浮点数。如果结果小于 1,则结果为 0。

在划分之前,您需要先将表达式转换为浮点数,例如

float m = static_cast<float>(a.y - b.y) / static_cast<float>(a.x - b.x);

原文由 BoltClock 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 ios 操纵器 fixed()。它将允许您打印浮点值。

原文由 ujjwal_mani 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题