【问题标题】:Losing Precision on purpose故意失去精度
【发布时间】:2014-01-13 11:11:32
【问题描述】:

在将 double 转换为 int 时:

double d = 5.5;
int i = (int) d;

变量“i”变为 5。这正是我想要的,问题是我收到警告:从 'double' 转换为 'int' 可能会导致精度损失 我的问题是,有没有办法告诉 IDE 这种精度损失是预期的,所以我不会收到警告? 那么有没有其他方法可以丢失精度并转换为整数?

我知道我可以完全禁用所有丢失精度警告,但这并不好。 我正在使用 Intellij IDEA 13

【问题讨论】:

    标签: java casting ide int double


    【解决方案1】:

    为什么要声明另一个变量“i”.. 我的意思是你可以在任何你想要的地方直接使用“(int)d”,这样你也可以节省一些内存。

    【讨论】:

      【解决方案2】:

      考虑在您的方法中添加 @SuppressWarnings("NumericCastThatLosesPrecision")。这将是您所关心的便携式解决方案。

      【讨论】:

      【解决方案3】:

      您可以在整个项目的 Idea 中禁用此检查。

      主菜单 -> 分析 -> 配置当前文件分析 -> 配置检查

      使用搜索找到“失去精度的数字转换”检查并取消选中它。

      【讨论】:

      • 是的,但正如我所说的那样,它不会很好。有时此类警告会有所帮助。
      • 那么你应该用@SuppressWarnings("NumericCastThatLosesPrecision")注释你的方法
      【解决方案4】:

      最好的办法是使用 Double 和 Integer。然后你可以使用 intValue() 方法。

      【讨论】:

      • 所以看起来像这样: int i = new Double(5.5).intValue();这个操作的速度会和正常的施法一样吗?
      • 是的,它看起来像你写的。无需担心此操作的速度,因为它不包含任何复杂的指令。
      • @user3009344:创建对象会有一些开销。
      猜你喜欢
      • 2012-05-14
      • 2011-03-17
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 2018-05-09
      • 2017-11-04
      • 1970-01-01
      相关资源
      最近更新 更多