我想从给定的double中根据某些规则获得下一个最高编号,由于我在描述它们时遇到一些困难,因此我将通过示例进行说明:

Input      Desired output
-------    --------------
   0.08         0.1
   0.2          0.5
   5           10
   7           10
  99          100
 100          500
2345         5000

在某种意义上,输出应为“5或10的下一个最高倍数”。

我希望这是可以理解的;如果没有,请告诉我。

实现将在java中进行,输入将为正double

最佳答案

function top5_10 (x) {
  var ten = Math.pow(10, Math.ceiling(Math.ln(x)/Math.LN10)));
  if (ten > 10 * x) { ten = ten / 10; }
  else if (ten <= x) { ten = 10 * ten; }
  return x < ten / 2 ? ten / 2 : ten;
}

或类似的东西:-)

10-07 18:32