我遇到了一个恼人的问题,在BlueJ上编译我的Java程序时出现“可能会丢失精度”错误(但是从我读到的内容并未连接到特定的IDE)。 / p>
我很惊讶编译器告诉我可能会丢失精度并且不允许我编译/运行程序。 为什么这是一个错误,而不是一个警告,如果您不想更改代码,可能会失去精确度?
当我删除浮点值时程序运行正常;因为在我的屏幕上没有任何意义(例如[143.08,475.015]),这没关系。
另一方面,当我循环遍历ArrayList并在此循环中,我有一个if子句从ArrayList中删除它运行正常的元素,只是抛出一个错误并且不显示ArrayList [用于绘制圆圈]几分之一秒。这在我看来是一个严重的错误,但不会导致(几乎)任何麻烦,而我根本不想在我的代码中有这样的事情。
边界是什么?
答案 0 :(得分:2)
这是一个错误,因为规范不允许缩小Assignment Conversion中的原始转换。
如果您确实要将较大的数据类型分配给较小的数据类型,例如double
到float
,则必须明确地投射它。
答案 1 :(得分:0)
这可能导致很难检测到的计算错误。所以它是错误的 - 你不希望程序在结果中给你带有未知错误的结果。