如何获得最准确的结果?

Sam*_*iao 0 c

鉴于:

unsigned int a, b, c, d;
Run Code Online (Sandbox Code Playgroud)

我想要:

d = a * b / c;
Run Code Online (Sandbox Code Playgroud)

和(a*b)可能溢出; 也(b/c)可能等于零并且精度较低.

也许一个64位的演员可以让事情发挥作用,但我想知道在d中获得最准确结果的最佳方法.

有什么好的解决方案吗?

Mat*_*t J 5

我要么:

  • 如果适用于a,b和c的范围,则转换为64位.
  • 使用像GMP这样的无限精度库
  • 如果您发现这些结果可以接受,则转换为floatdouble返回.