【问题标题】:Why can't I pass a int to a float in the same statement? [closed]为什么我不能在同一个语句中将 int 传递给 float? [关闭]
【发布时间】:2017-07-03 02:29:14
【问题描述】:

我试图从我的int 语句中取出一个float 语句,因为在我的游戏中,精灵使用float 来获取它所在位置的坐标。然而,瓷砖地图使用int 来获取瓷砖的位置。为什么你不能在同一个语句中使用intfloat,如果它是一个明显的答案,你如何去改变它而不必在其他方法中使用强制转换?

【问题讨论】:

  • A cast IS 将一种数字类型更改为另一种的方法。为什么你觉得有必要避免演员表?
  • 我不确定您是否正确理解强制转换或您的意思,但您可以在需要的地方进行转换,例如int fromTileX = tmap.getTileWidth((int)fromX);。这根本不会改变游戏的结构。
  • @911DidBush 尽管方法名称可能具有误导性,但您可以使用带有参数的 getter。我假设它的意思是将位置作为参数,找到相应的 tile 列并返回该列的起始位置。
  • 您可能想要显示方法签名以及您如何调用它。
  • 为什么把所有的代码都删了?这样你的问题对于未来的读者来说很难理解。除此之外,很明显(至少从编译器错误中)您不能将任何内容传递给不接受参数的方法。您甚至无法通过 int,即问题实际上与该问题无关。

标签: java collision-detection 2d-games


【解决方案1】:

您不能将float 值分配给int 变量,因为某些信息会丢失。出于同样的原因,您不能将float 值传递给参数声明为int 的方法。 (由于术语使用不正确,您的问题相当不清楚,但我认为您正在尝试使用后者)

您可以通过使用强制转换操作告诉编译器您确实想丢失信息(浮点数的小数部分)。这就是方法和原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多