Разница между десятичной, плавающей и двойной в .NET?



Answers

Точность - главное различие.

Float - 7 цифр (32 бит)

Double -15-16 цифр (64 бит)

Decimal -28-29 значащих цифр (128 бит)

Десятичные числа имеют гораздо более высокую точность и обычно используются в финансовых приложениях, требующих высокой степени точности. Десятичные числа намного медленнее (до 20 раз в некоторых тестах), чем двойной / плавающий.

Десятичные числа и поплавки / парные пары не могут сравниваться без броска, тогда как Floats and Doubles могут. Десятичные числа также допускают кодирование или конечные нули.

float flt = 1F/3;
double dbl = 1D/3;
decimal dcm = 1M/3;
Console.WriteLine("float: {0} double: {1} decimal: {2}", flt, dbl, dcm);

Результат:

float: 0.3333333  
double: 0.333333333333333  
decimal: 0.3333333333333333333333333333
Question

В чем разница между decimal , float и double в .NET?

Когда кто-нибудь воспользуется одним из них?




Целые числа, как уже упоминалось, являются целыми числами. Они не могут хранить точку, например .7, .42 и .007. Если вам нужно хранить числа, которые не являются целыми числами, вам нужен другой тип переменной. Вы можете использовать тип double или float. Вы устанавливаете эти типы переменных точно так же: вместо использования слова int вы вводите double или float . Как это:

float myFloat;
double myDouble;

( float подходит для «плавающей запятой» и просто означает число с точкой что-то в конце.)

Разница между ними - это размер чисел, которые они могут удерживать. Для float вы можете иметь до 7 цифр в своем номере. Для double s вы можете иметь до 16 цифр. Если быть более точным, вот официальный размер:

float:  1.5 × 10^-45  to 3.4 × 10^38  
double: 5.0 × 10^-324 to 1.7 × 10^308

float - 32-разрядное число, а double - 64-разрядное число.

Дважды щелкните по новой кнопке, чтобы получить код. Добавьте в код кнопки следующие три строки:

double myDouble;
myDouble = 0.007;
MessageBox.Show(myDouble.ToString());

Остановите свою программу и вернитесь в окно кодирования. Измените эту строку:

myDouble = 0.007;
myDouble = 12345678.1234567;

Запустите программу и нажмите двойную кнопку. В поле сообщения правильно отображается номер. Добавьте еще один номер в конец, и C # снова округляется вверх или вниз. Мораль - если вы хотите точности, будьте осторожны с округлением!




Никто не упомянул, что

В настройках по умолчанию Floats (System.Single) и double (System.Double) никогда не будут использовать проверку переполнения, в то время как Decimal (System.Decimal) всегда будет использовать проверку переполнения.

Я имею в виду

decimal myNumber = decimal.MaxValue;
myNumber += 1;

выбрасывает OverflowException .

Но это не так:

float myNumber = float.MaxValue;
myNumber += 1;

&

double myNumber = double.MaxValue;
myNumber += 1;






Типы переменных Decimal, Double и Float отличаются тем, что они сохраняют значения. Точность - основное отличие, когда float представляет собой тип данных с плавающей точкой с одной точностью (32 бит), double - это тип данных с плавающей запятой двойной точности (64 бит), а десятичный - это тип данных с плавающей точкой с 128-битной точкой.

Float - 32 бит (7 цифр)

Двойной - 64 бит (15-16 цифр)

Десятичная - 128 бит (28-29 значащих цифр)

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




Основное различие между каждым из них - точность.

float - 32-bit число, double - это 64-bit число, а decimal число - 128-bit число.




Типы переменных Decimal, Double и Float отличаются тем, что они сохраняют значения. Точность - основное отличие, когда float представляет собой тип данных с плавающей точкой с одной точностью (32 бит), double - это тип данных с плавающей запятой двойной точности (64 бит), а десятичный - это тип данных с плавающей точкой с 128-битной точкой.

Float - 32 бит (7 цифр)

Двойной - 64 бит (15-16 цифр)

Десятичная - 128 бит (28-29 значащих цифр)

Основное различие заключается в том, что Floats and Doubles представляют собой двоичные типы с плавающей запятой, а Decimal будет хранить значение в виде типа с плавающей запятой. Таким образом, Decimals имеют гораздо более высокую точность и обычно используются в денежных (финансовых) или научных приложениях расчета, которые требуют высокой степени точности. Но по производительности разумные Десятичные числа медленнее, чем двойные и плавающие типы.

Decimal может 100% точно представлять любое число в пределах точности десятичного формата, тогда как Float и Double, не могут точно представлять все числа, даже числа, которые находятся в пределах их соответствующих форматов.

Десятичная дробь

В случае финансовых приложений или научных расчетов лучше использовать десятичные типы, потому что это дает вам высокий уровень точности и легко избежать ошибок округления

двойной

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

терка

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




float ~ ± 1,5 x 10-45 до ± 3,4 × 1038 -------- 7 цифр
двойной ~ ± 5,0 × 10-324 ± 1,7 × 10308 ------ 15 или 16 цифр
десятичная ~ ± 1,0 × 10-28 до ± 7,9 × 1028 -------- 28 или 29 цифр




Related