添加数百万个定点数

时间:2012-12-29 09:58:48

标签: c# double decimal

我已经在小数点后面提供了数百万个正好有4位数的数字。

必须以复杂的方式(在优化问题中)添加和减少它们。之后(以及之间)我必须确定完全值。

在C#中,我想到了三种不同的可能性:

  1. 使用双精度数并定义舍入误差以进行比较。
  2. 使用小数类型
  3. 创建使用整数运算的类型
  4. 你会建议什么?

2 个答案:

答案 0 :(得分:6)

绝对不要使用double。它并不代表您所获得的信息。

我个人首先使用decimal。它是您获得的信息最合适的类型,您可以依赖结果。

如果证明太慢,你可以将所有值转换为整数,执行所有算术运算,然后转换回来 - 但我只会在之后执行此操作已经看到了decimal版本的表现。

答案 1 :(得分:3)

double仅提供小数分数的近似表示(例如,十进制没有精确的二进制表示形式为0.2)。 decimal类型可以在整个算术中生成一个精确的值,但decimal可以比任何base2类型慢,如float和double,如果不是更多。

也许你可以在算术之前将所有数字扩展到10000的数量级并对整数进行操作,然后将基数放回去;检查十进制的执行方式。