如何提高大数字的双精度精度?

时间:2016-04-10 09:05:05

标签: c# .net double precision

在此示例代码中

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

如果我使用Double进行此操作,则无法给出准确的答案。在这里输出" 1"它应该输出的地方" 0"。

无论如何都要增加大号双数的精度吗?

注意: 我知道BigInteger并且我可以使用它们,但BigInteger需要很长时间,我想知道如果我可以与双打具有相同的精度。

2 个答案:

答案 0 :(得分:3)

您可以使用Decimal

适用于财务和货币计算。 Double基于IEEE浮点运算标准(IEEE 754)。

如果您想知道二进制浮点和十进制浮点之间的差异,请阅读以下文章(reference)。

Binary floating point(浮动/双倍)
Decimal floating point(十进制)

答案 1 :(得分:1)

Double不应该用于需要小数精度的操作,您应该使用Decimal数据类型进行十进制算术运算。

Double数据类型仅对二进制算术是精确的,基于二进制浮点,对于十进制算术,它不可能100%精确。