我遇到一个烦人的问题,在BlueJ上编译Java程序时遇到“可能的精度损失”错误(但是从我的阅读中来看,这并没有连接到特定的IDE)。

编译器告诉我可能会损失精度,并且不允许我编译/运行程序,这让我感到惊讶。为什么这是一个错误,而不是警告,如果您不希望更改代码,则可能会失去精度?

当我删除float值时,程序运行正常。没关系,因为我的屏幕上没有任何内容(例如[143.08,475.015])。

另一方面,当我遍历ArrayList并在此循环中有一个if子句从ArrayList中删除元素时,它运行良好,只是抛出一个错误,并且在很短的时间内不显示ArrayList [用于绘制圆圈]第二。在我看来,这是一个严重的错误,但不会(几乎)不会造成任何麻烦,尽管我根本不想在代码中出现这种情况。

边界在哪里?

最佳答案

这是一个错误,因为该规范不允许缩小Assignment Conversion中的原始转换。

如果您确实想将较大的数据类型分配给较小的数据类型,例如doublefloat,则必须显式强制转换。

08-06 00:42
查看更多