2013-12-25 3 views
3

При преобразовании двойной Int:потери точности с целью

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

Variable «я» становится 5. Это именно то, что я хочу, проблема в том, я получаю предупреждение: Cast к «межд» от «двойной 'может привести к потере точности Мой вопрос в том, есть ли способ сказать IDE, что такая прецизионная потеря ожидается, поэтому я не получу предупреждение? Так есть ли другой способ потерять точность и отличить целое число?

Я знаю, что я мог бы отключить все предупреждения о точности потерь вообще, но это было бы неплохо. Я использую Intellij IDEA 13

ответ

3

Лучше всего использовать Double и Integer. Затем вы можете использовать метод intValue().

+0

Таким образом, это будет выглядеть так: int i = new Double (5.5) .intValue(); Скорость этой операции будет такой же, как и обычная кастинг? – user3009344

+0

Да, похоже, вы написали. Что касается скорости этой операции, не нужно, потому что она не содержит сложных инструкций. – wawek

+0

Хорошо, спасибо :) – user3009344

4

Рассмотрите возможность добавления @SuppressWarnings ("NumericCastThatLosesPrecision") на ваш метод. Это будет переносное решение вашей проблемы.

+0

http://www.jetbrains.com/idea/webhelp/suppressing-inspections.html объясняет графический способ сделать это. – user60561

0

Вы можете отключить эту проверку в Idea для всего проекта.

Главного меню -> Анализ -> Настройка текущих анализов файлов -> Настройка проверки

Используйте Seach, чтобы найти «Числовой бросок, который теряет точность» осмотр и снимите его.

+0

Да, но, как я сказал, это будет нехорошо. Иногда такие предупреждения могут помочь. – user3009344

+0

Затем вы должны аннотировать, что вы встретили @SuppressWarnings («NumericCastThatLosesPrecision») – PKopachevsky

0

Почему вы хотите объявить другую переменную «i» .. Я имею в виду, что вы можете напрямую использовать «(int) d», где бы вы ни захотели, таким образом вы также сохраняете некоторую память.

Смежные вопросы