float x = 5;
Int16 x2 = (Int16)(x * 0.005);
x2 是 x 的截断/舍入版本。表示 200 个单元的块,如上面的代码所示。
然而,上面的代码在 0 上产生了一个更大的间隔。一个 400 而不是 200 的间隔。
x x2 intended
-500 -2 -3
-300 -1 -2
-100 0 -1
100 0 0
300 1 1
500 2 2
-210 -1 -2
-190 0 -1
-20 0 -1
-10 0 -1
10 0 0
20 0 0
190 0 0
210 1 1
解决此问题的有效方法是什么?