Предупреждение против ошибки - PullRequest
0 голосов
/ 20 мая 2010

У меня возникла досадная проблема: «Возможная потеря точности» ошибка при компиляции моей Java-программы на BlueJ (но из того, что я прочитал, это не связано с конкретной IDE).

Я был удивлен тем фактом, что компилятор сказал мне, что возможна потеря точности, и не позволил мне скомпилировать / запустить программу. Почему это ошибка, а не предупреждение о том, что вы можете потерять точность здесь, если не хотите, чтобы это изменило ваш код?

Программа работает очень хорошо, когда я сбрасываю значения с плавающей точкой; это не имеет значения, поскольку на моем экране нет никакого смысла (например, [143.08, 475.015]).

С другой стороны, когда я перебираю ArrayList и в этом цикле у меня есть предложение if, удаляющее элементы из ArrayList, оно работает нормально, просто выдает ошибку и не отображает ArrayList [используемый для рисования кругов] для доли секунды. Это кажется мне серьезной ошибкой, но не вызывает (вряд ли) никаких проблем, хотя я бы вообще не хотел, чтобы такая вещь была в моем коде.

Какая граница?

Ответы [ 2 ]

2 голосов
/ 20 мая 2010

Это ошибка, потому что спецификация не позволяет сужать примитивные преобразования в Преобразовании присвоений .

Если вы действительно хотите назначить больший тип данных меньшему, например, от double до float, вы должны явно привести его.

0 голосов
/ 20 мая 2010

Это может привести к ошибкам вычислений, которые очень трудно обнаружить. Так что это правильно, это ошибка - вы не хотите, чтобы программа выдала вам результат с неизвестной ошибкой в ​​результате.

...