将数字四舍五入至最接近的0.05,以0.025或0.075结尾

Cri*_*ina 5 arrays algorithm rounding match ceil

A = [0.123 0.234 0.562 0.665 ]
B = [0.125 0.225 0.575 0.675]
C = [-43.975 -43.925 -43.875 -43.825 -43.775 -43.725 -43.675]
Run Code Online (Sandbox Code Playgroud)

我想使数组A看起来像数组B。我正在使用的卫星数据具有0.05度的分辨率,因此像数组C一样对它的经度和纬度值进行编号。因此,数字以0.05的增量递增,但以25结束或数组C中的75。我有数组A中的数字,需要与卫星数据的网格匹配。我需要像数组A中那样四舍五入或变换数字,使其看起来像数组B中的数字。

我已经尝试使用round和使用,math.ceil但都无法完全正常工作。

Erg*_*wun 1

这是一个舍入算法来做到这一点:

\n\n
    \n
  1. 添加0.025
  2. \n
  3. 乘以 20
  4. \n
  5. 四舍五入到最接近的整数
  6. \n
  7. 除以 20
  8. \n
  9. 减去0.025
  10. \n
  11. 四舍五入到小数点后 3 位(以处理浮点精度问题)
  12. \n
\n\n

例如在Python中:

\n\n
def x_round(x): return round((round((x+0.025)*20)/20)-0.025,3);\n\nA = [0.123, 0.234, 0.562, 0.665]\n\nfor item in A:\n    print(x_round(item))\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
0.125\n0.225\n0.575\n0.675\n\xee\xba\xa7\n
Run Code Online (Sandbox Code Playgroud)\n