2016-04-10 3 views
1

В этом примере кодаКак увеличить точность двойного типа для больших чисел?

double number = 2646849856355434345; 
Console.WriteLine(number % 5); 

Если я использую двойной для этой операции, он не даст точного ответа. Здесь он будет выводить «1», где он должен выводить «0».

Есть ли способ повысить точность для больших двойных чисел?

Примечание: Я знаю о BigInteger, и я могу их использовать, но BigInteger занимает много времени, и мне интересно. Если у меня будет такая же точность с удвоениями.

+1

Как насчет использования 'Decimal'? Я считаю, что он имеет большую точность, чем «Двойной». –

+1

Да, десятичная цифра имеет точность около 29 цифр. –

+1

Вы не можете изменить тип данных 'double', вы можете переключиться только на другой тип данных. –

ответ

3

Вы можете использовать Decimal.

Он подходит для финансовых и денежных расчетов. (IEEE 754).

Если вы хотите узнать разницу между двоичной плавающей точкой и десятичной точкой с плавающей запятой, прочитайте следующие статьи (reference).

Binary floating point (поплавок/двойной)
Decimal floating point (десятичное)

1

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

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

Смежные вопросы