为什么不同的计算机在VB.NET中计算不同的算术结果?

时间:2010-03-10 18:45:53

标签: vb.net floating-point math

我有一些用VB.NET编写的软件执行大量计算,主要是将jpegs提取到位图并计算像卷积和矩阵乘法等像素的计算。尽管输入相同,但不同的计算机给我不同的结果。可能是什么原因?

编辑:我无法提供算法,因为它是专有的,但我可以提供所有相关操作:

  • ULong \ ULong(Turuncating division)
  • Bitmap.Load(“filename.bmp”)(将位图加载到内存中)
  • Bitmap.GetPixel(整数,整数)(获取像素的亮度)
  • Double + Double
  • Double * Double
  • Math.Sqrt(双人)
  • Math.PI
  • Math.Cos(双人)
  • ULong - ULONG
  • ULong * ULong
  • ULong<< ULONG
  • List.OrderBy(Of Double)(Func)

嗯...... OrderBy是否可能使用非稳定的QuickSort并且QuickSort使用随机数据? 修改:刚刚测试过,没有。排序很稳定。

3 个答案:

答案 0 :(得分:2)

事实证明,Bitmap.Load(“filename.jpeg”)并不总是在每台计算机上生成相同的位图。然而,我仍然不知道为什么会这样。

答案 1 :(得分:1)

  • 软件中的一个或多个错误(例如未初始化的变量)?

  • 旧的Intel CPU浮点除法错误?

  • 数值不稳定的算法?

答案 2 :(得分:1)

屏幕驱动程序 - 每个驱动程序将以不同的方式GUI值。虽然像素数相同,但颜色深度可能因屏幕驱动程序而异。现在设置成一个数组并在那些机器上比较那个数组,你可能会看到几个字节的差异。

我会打印$总计,看看他们加起来