在此示例代码中
double number = 2646849856355434345;
Console.WriteLine( number % 5 );
如果我使用Double进行此操作,则无法给出准确的答案。在这里输出" 1"它应该输出的地方" 0"。
无论如何都要增加大号双数的精度吗?
注意: 我知道BigInteger并且我可以使用它们,但BigInteger需要很长时间,我想知道如果我可以与双打具有相同的精度。
答案 0 :(得分:3)
您可以使用Decimal。
适用于财务和货币计算。 Double基于IEEE浮点运算标准(IEEE 754)。
如果您想知道二进制浮点和十进制浮点之间的差异,请阅读以下文章(reference)。
Binary floating point(浮动/双倍)
Decimal floating point(十进制)
答案 1 :(得分:1)
Double
不应该用于需要小数精度的操作,您应该使用Decimal数据类型进行十进制算术运算。
Double
数据类型仅对二进制算术是精确的,基于二进制浮点,对于十进制算术,它不可能100%精确。