Какой тип в C# обеспечивает точное представление значения с плавающей точкой
Какой тип обеспечивает точное представление значения с плавающей точкой (float)?
Источник: Stack Overflow на русском
Какой тип обеспечивает точное представление значения с плавающей точкой (float)?
Точное представление в C# обеспечивает тип decimal
- 28–29 значащих цифр.
Абсолютно точного представления числа с плавающей точкой в C# нет, т.к. оно потребовало бы бесконечного количества памяти (по крайней мере для иррациональных чисел).
В C# нет такого типа. Все типы имеют ограниченную точность, кроме класса BigInteger
.
Последний можно приспособить для хранения чисел с плавающей точкой, если отдельно хранить еще и положение десятичной точки в числе.
Однако, смею заметить, что даже не все непериодические десятичные числа обеспечивают точное представление. Так, например, число 1/3
не может иметь точного представления в виде непериодической десятичной дроби.