我正在考虑编写一个应用程序,该应用程序计算随着时间的推移在暴露(例如火)的材料中的温度分布。
然后我需要将结果绘制为材料几何形状的热图。
现在我想知道我是否应该在所有计算和绘图中使用 Decimal 或 Double。我已经研究过两者,但仍然不确定使用哪个。
我需要比较值,包括随时间推移的插值。据我所知,由于表示不精确,double 有比较问题。但是十进制很重。
我只倾向于双倍,但同时更精确的表示和比较也很有价值。
十进制数的任何有限表示都必然与有限二进制表示具有相同的“不精确表示”问题。并非所有实数都可以在有限空间中表示,并且以 10 为底并无帮助。
当谈到表示物理模拟时,十进制只是使用相同的位效率较低。另一方面,十进制数的特定实现可能允许使用更多位,但也可以使用多精度二进制浮点实现。
十进制浮点库不会“不精确”或存在“比较问题”的迷信很普遍,因为这些库可以精确地表示从 0.1 开始的十进制数。如果您的模拟涉及十次方的系数,那么十进制确实是一个很好的选择。否则,十进制将无法解决连续数字范围的有限表示所固有的任何问题。