我已经在小数点后面提供了数百万个正好有4位数的数字。
必须以复杂的方式(在优化问题中)添加和减少它们。之后(以及之间)我必须确定完全值。
在C#中,我想到了三种不同的可能性:
你会建议什么?
答案 0 :(得分:6)
绝对不要使用double
。它并不代表您所获得的信息。
我个人首先使用decimal
。它是您获得的信息最合适的类型,您可以依赖结果。
如果证明太慢,你可以将所有值转换为整数,执行所有算术运算,然后转换回来 - 但我只会在之后执行此操作已经看到了decimal
版本的表现。
答案 1 :(得分:3)
double
仅提供小数分数的近似表示(例如,十进制没有精确的二进制表示形式为0.2)。 decimal
类型可以在整个算术中生成一个精确的值,但decimal
可以比任何base2类型慢,如float和double,如果不是更多。
也许你可以在算术之前将所有数字扩展到10000的数量级并对整数进行操作,然后将基数放回去;检查十进制的执行方式。