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

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]

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

我尝试使用roundmath.ceil,但都无法正常工作。

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

以下是一种四舍五入算法:

  1. 添加0.025
  2. 乘以20
  3. 舍入到最接近的整数
  4. 除以20
  5. 减去0.025
  6. 舍入到小数点后3位(以处理浮点精度问题)

例如在python中:

def x_round(x): return round((round((x+0.025)*20)/20)-0.025,3);

A = [0.123,0.234,0.562,0.665]

for item in A:
    print(x_round(item))

输出:

0.125
0.225
0.575
0.675

,

这里是寻找以0.025或0.075结尾的最近邻居的版本。 (处理负输入留给阅读器。)

JavaScript代码:

function f(n){
  n = n * 1000
  let m = n % 100
  if (m <= 50)
    return (n - m + 25) / 1000
  else
    return (n - m + 75) / 1000
}

var A = [0.123,0.665]

console.log(JSON.stringify(A))
console.log(JSON.stringify(A.map(x => f(x))))

本文链接:https://www.f2er.com/3103143.html

大家都在问