Long имеет размер 8 байт, тогда как его можно "продвинуть", чтобы плавать (4 байта) в JAVA?

Я читал, что в Java длинный тип может быть повышен float и double (http://www.javatpoint.com/method-overloading-in-java). Я хотел спросить, что long integer занимает 8 байт памяти в JAVA, а float - 4 байта, как работает эта акция? Возможно ли, что мы столкнемся с некоторой потерей данных, если будем продвигать этот путь?

также заметно, что все другие рекламные акции типа от примитивного типа данных меньшего размера до аналогичного или большего размера тип данных.

  • байт до short, int, long, float или double
  • short в int, длинные, с плавающей точкой или двойной
  • char для int, long, float или double
  • int до long, float или double
  • долго плавать или двойной _______________ исключительный в случае Float
  • float к Double

3 ответов


float представляется по-другому, чем интегральные типы. Для получения дополнительной информации о плавающем типе прочитайте это:https://en.wikipedia.org/wiki/Single-precision_floating-point_format . Содержимое будет выглядеть так: формат с плавающей запятой состоит из знака-бита, 8 бит для экспоненты и 23 бит для дробной части значения. Значение рассчитывается следующим образом: (-1)^signbit * 1.фракционная часть * 2 ^ (показатель-127). Таким образом, этот алгоритм позволяет представление больших значений, чем 64-битный интегральный тип.


long использует больше байтов, но имеет меньший диапазон: while long не может идти выше 263, float может идти о 2127. Очевидно, что расширение диапазона происходит по цене более низкой точности, но так как диапазон float больше, преобразование из long до float пропаганда.


этот быстрый тест должен показать, почему:

public class Main {

    public static void main(String[] args) {
        System.out.println("Float: " + Float.MAX_VALUE);
        System.out.println("Long: " + Long.MAX_VALUE);
    }
}

выход:

Float: 3.4028235E38
Long: 9223372036854775807

обратите внимание на научную нотацию в строке Float. Поплавок занимает меньше места, но благодаря своему представлению он может выдерживать большее число, чем длинное.