假设我有三个双打,a、b 和 c。
double a = 1.234560123;
double b = 7.890120123;
double c = a * b;
c = 9.740827669535655129
我想使用只有 5 个小数位的数字。因此,如果我使用 Math.Round(a, 5) 和 Math.Round(b, 5) 对 a 和 b 进行舍入,我会得到:
double a_r = Math.Round(a, 5);
double b_r = Math.Round(b, 5);
a_r = 1.23456
b_r = 7.89012
double c_r = a_r * b_r;
c_r = 9.7408265472
但是当我计算 c 时,我仍然得到一个超过 5 位小数的数字(这将发生在每个乘法、除法、增强和类似操作中)。我可以在我的代码中舍入所有结果,但这是我想避免的艰苦工作。
由于我在其他操作中使用 c 并且在其他操作中使用此操作的结果,我不想每次都舍入所有中间结果,以免传播由不需要的小数位引起的错误。
有没有一种方法可以独立于操作来定义具有固定小数位数的双精度数?