两个完全相同的计算有可能给出不同的结果?

时间:2014-02-21 07:57:52

标签: numbers

我目前正在重建一个最初用VB6编写的旧发票计划 它有两个部分,一个在Android平板电脑上,另一个在个人电脑上。使用的旧数据库存储了派生值,因为重复时计算可能不正确。 例如,如果出售5件物品,其价格为10欧元,10%折扣,税率为23%,则会存储上述4个值,但也会计算出(5 *(10 * 1.23))* 0.9的计算结果。 。
我真的不喜欢在我的数据库中有重复或可导出的信息,但实际的销售价值必须相同,无论是在平板电脑上还是在平板电脑上查看。
所以我的问题是,是否有机会(即使是最轻微的一点)上述calucation(三个十进制)会在不同的操作系统(如Android设备和台式计算机)上产生不同的结果? 提前感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。浮点算法总是受到舍入误差的影响,不同的语言(和架构)以不同的方式处理这些错误。处理这些问题有最佳实践,但我认为自己没有足够的知识可以与他们交谈。但是这里有几个选项。

  1. 使用用于浮点运算的数据类型。例如,VB6有一个Single和Double类型用于浮点,但也有一个Currency类型用于精确的十进制数学。
  2. 将浮点值缩放为整数,并对这些整数值执行计算。您甚至可以将结果作为整数存储在数据库中。我们使用的ERP系统执行此操作,并包含一个数据字典,用于定义每种类型的缩放方式,以便在显示之前进行“非标定”。
  3. 希望有所帮助。