«Преобразование с потерями» против «Потери точности» - PullRequest
0 голосов
/ 08 июня 2018

Может ли кто-нибудь объяснить / связать любую документацию, которая может различать

Возможная ошибка потери точности

и

Преобразование с потерями.

Я не могу понять, какая ошибка возникнет при каких обстоятельствах.Любое объяснение с примерами высоко ценится

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Разница - это конец числа, которое отсекается:

  • Преобразование с потерями возвращает младшие значащие биты.Это описано в JLS Sec 5.1.3 :

    При сужающемся преобразовании целого числа со знаком в целочисленный тип T просто отбрасываются все, кроме n младших битов, где n равночисло битов, используемых для представления типа T. Помимо возможной потери информации о величине числового значения, это может привести к тому, что знак полученного значения будет отличаться от знака входного значения.

    Это что-то вроде преобразования целого числа в байт: в этом случае вы просто получаете 8 младших разрядов:

    System.out.println((byte) 258); // 2
    
  • Потеря точности возвращает наиболее значимыйбиты.Это описано в JLS Sec 5.1.2 :

    Расширяющееся преобразование примитива из int в float, из long в float или из long в double может привести к потеря точности - то есть результат может потерять некоторые младшие значащие биты значения.

    Это что-то вроде хранения int в float, который слишком велик длябыть представленным точно

    int i = (1 << 24) + 1;
    float f = i;
    System.out.println((int) f == i); // false, because precision is lost.
    
0 голосов
/ 08 июня 2018

Вы получаете возможную потерю точности, когда пытаетесь привести значение типа double к int.Вы пытаетесь преобразовать один примитив в другой примитив, но недостаточно места, и вы можете потерять несколько своих байтов.

double x = 10.5;             // 8 bytes
int y = x;                   // 4 bytes ;  raises compilation error

Вам следует искать примитивы документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...