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. Поплавок занимает меньше места, но благодаря своему представлению он может выдерживать большее число, чем длинное.