В чем разница между integer и float
Перейти к содержимому

В чем разница между integer и float

Разница между Integer и Float

С другой стороны, число с плавающей точкой представляет числа, которые могут быть записаны в научной записи, с основанием и показателем степени. Числа с плавающей запятой или числа с плавающей запятой имеют фиксированное определенное количество битов, которые расположены для целого числа и дробной части числа. Если целая часть числа увеличивается, то биты для дробных частей имеют тенденцию быть менее доступными. Все целые числа могут быть представлены как значения с плавающей запятой. Тем не менее, в программировании из-за преимуществ, таких как меньшая занятость памяти, более быстрая обработка и округление, целые числа являются предпочтительными. С другой стороны, поплавки используются, когда требуется одинарная точность.

Сравнение между Integer и Float:

целое число

терка

Целые числа могут быть описаны как целые числа, означающие, что они не имеют дробных частей.

Числа с плавающей запятой или числа с плавающей запятой имеют фиксированное определенное количество битов, которые расположены для целого числа и дробной части числа.

Целочисленные типы данных могут быть представлены в трех системах счисления —

Десятичный, Восьмеричный и Шестнадцатеричный

Float может быть написано только с использованием десятичной системы счисления

Требование к памяти

Как правило, целочисленные типы данных требуют 2 байта памяти

Как правило, типы данных с плавающей запятой требуют 4 байта памяти

От латинского целое значение буквально означает «нетронутым», следовательно, «целое»

Расположение десятичной и двоичной точек перемещается, поэтому называется плавающими числами или плавающими.

Тип данных Целые числа

  • Байт — 1 байт информации (8 бит), диапазон от -128 до 127
  • Short — 2 байта, диапазон от -32768 до 32767
  • Int — 4 байта, диапазон от -2147483648 до 2147483647
  • Long — 8 байтов, диапазон от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807

Занимает 32 бита (4 байта) и имеет значение 24 бита (около 7 десятичных цифр).

В чем разница между типом данных float и integer при одинаковом размере?

В чем разница между типом данных float и integer при одинаковом размере?

  • float хранит значения с плавающей запятой, то есть значения, у которых есть потенциальные десятичные разряды
  • int хранит только целые значения, то есть целые числа

Таким образом, хотя оба они имеют ширину 32 бита, их использование (и представление) совершенно разные. Вы не можете сохранить 3,141 в виде целого числа, но можете в формате float .

Рассмотрим их немного дальше:

В целых числах все биты используются для хранения числового значения. Это (в Java и на многих компьютерах тоже) сделано в так называемом дополнении до двух . Это в основном означает, что вы можете представить значения от -2 31 до 2 31-1 .

В случае с плавающей запятой эти 32 бита разделены на три отдельные части: бит знака, показатель степени и мантисса. Они выложены следующим образом:

Существует единственный бит, который определяет, является ли число отрицательным или неотрицательным (ноль не является ни положительным, ни отрицательным, но бит знака установлен в ноль). Затем есть восемь бит экспоненты и 23 бита мантиссы. Чтобы получить из этого полезное число, (примерно) выполняется следующий расчет:

(Это еще не все, но этого должно быть достаточно для целей данного обсуждения)

Мантисса, по сути, не более чем 24-битное целое число. Это умножается на 2 в степени экспоненты, которая, грубо говоря, представляет собой число от -128 до 127.

Таким образом, вы можете точно представить все числа, которые вписываются в 24-битное целое число, но числовой диапазон также намного больше, поскольку более высокие показатели допускают большие значения. Например, максимальное значение a float составляет около 3,4 × 10 38, тогда как int допускаются только значения до 2,1 × 10 9 .

Но это также означает, что, поскольку 32 бита имеют только 4,2 × 10 9 различных состояний (которые все используются для представления значений, которые int можно сохранить), на большем конце float числового диапазона числа расположены шире друг от друга (поскольку не может быть уникальных float номеров больше, чем уникальных int номеров). Значит, вы не можете точно представить некоторые числа. Например, число 2 × 10 12 имеет представление в float 1 999 999 991 808. Это может быть около 2 000 000 000 000, но это не совсем точно. Точно так же добавление 1 к этому числу не меняет его, потому что 1 слишком мало, чтобы иметь значение для больших масштабов float , используемых там.

Точно так же вы также можете представлять очень маленькие числа (от 0 до 1) в a, float но независимо от того, являются ли числа очень большими или очень маленькими, float имеет точность только около 6 или 7 десятичных цифр. Если у вас большие числа, эти цифры находятся в начале числа (например, 4,51534 × 10 35 , что представляет собой не более чем 451534, за которыми следуют 30 нулей — и float не может сказать ничего полезного о том, являются ли эти 30 цифр нулями на самом деле или чем-то еще), для очень маленьких чисел (например, 3,14159 × 10 −27 ) они находятся в дальнем конце числа, далеко за пределами начальных цифр 0,0000 .

What is the difference between the float and integer data type when the size is the same?

What the difference between the float and integer data type when size is same?

user avatar

3 Answers 3

  • float stores floating-point values, that is, values that have potential decimal places
  • int only stores integral values, that is, whole numbers

So while both are 32 bits wide, their use (and representation) is quite different. You cannot store 3.141 in an integer, but you can in a float .

Dissecting them both a little further:

In an integer, all bits are used to store the number value. This is (in Java and many computers too) done in the so-called two’s complement. This basically means that you can represent the values of −2 31 to 2 31 − 1.

In a float, those 32 bits are divided between three distinct parts: The sign bit, the exponent and the mantissa. They are laid out as follows:

There is a single bit that determines whether the number is negative or non-negative (zero is neither positive nor negative, but has the sign bit set to zero). Then there are eight bits of an exponent and 23 bits of mantissa. To get a useful number from that, (roughly) the following calculation is performed:

(There is more to it, but this should suffice for the purpose of this discussion)

The mantissa is in essence not much more than a 24-bit integer number. This gets multiplied by 2 to the power of the exponent part, which, roughly, is a number between −128 and 127.

Therefore you can accurately represent all numbers that would fit in a 24-bit integer but the numeric range is also much greater as larger exponents allow for larger values. For example, the maximum value for a float is around 3.4 × 10 38 whereas int only allows values up to 2.1 × 10 9 .

But that also means, since 32 bits only have 4.2 × 10 9 different states (which are all used to represent the values int can store), that at the larger end of float ‘s numeric range the numbers are spaced wider apart (since there cannot be more unique float numbers than there are unique int numbers). You cannot represent some numbers exactly, then. For example, the number 2 × 10 12 has a representation in float of 1,999,999,991,808. That might be close to 2,000,000,000,000 but it’s not exact. Likewise, adding 1 to that number does not change it because 1 is too small to make a difference in the larger scales float is using there.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *