在Delphi中,如何确定何时使用Real,Real48,Double或Single数据类型?

Mic*_*nny 12 delphi compatibility types

我的大部分申请都围绕着涉及支付和利率计算的财务计算.我正在寻找如何确定最适合使用的Delphi数据类型.

如果我使用数据库来存储这些值,并且我已将该数据库中的字段定义为带有两个小数位的十进制值,哪种Delphi数据类型与该方案最兼容?

在将值存储在数据库中之前,我是否应该使用Delphi中的舍入公式将结果格式化为两位小数?如果是这样,这样做的最佳做法是什么?

Mas*_*ler 10

如果要进行财务计算,请不要使用任何浮点/实数类型.Delphi有一个Currency类型,它是一个带有4位小数的定点值,应该就是你需要的.

  • @Cape:乘法和除法是可交换的.请尝试0.05*1000/365. (3认同)

Rud*_*uis 10

对于此类计算,请勿使用Real,Single或Double等浮点类型.它们不适合像0.01或1234.995这样的小数值,因为它们必须近似它们.

您可以使用货币,固定点类型,但仍然限制为4位小数.

试试我的Decimal类型,它有28-29个位置并且有一个十进制指数,所以它非常适合这样的计算.唯一的缺点是它不支持FPU(但是用汇编语言编写),因此它没有内置类型那么快.它与.NET中使用的Decimal类型相同(但速度稍快),与Mac上使用的类似.