确定数值是否在非特定整数的某个范围内

时间:2016-01-22 02:51:13

标签: javascript math floating-point

我正在使用各种JavaScript Math函数,由于浮点数,这些函数偶尔返回的值大于或小于正确的整数答案0.000000001。我希望为所述函数设置一个if-else语句,如果该值在整数的某个小范围内,将返回正确的整数答案(请注意,所述整数的非特异性非常重要)。

所以我想问,有没有办法,使用JavaScript来确定从数学函数(例如Math.cbrt())返回的值是否在非特定整数的某个边界内?

注意:我尝试在函数中使用Number.EPSILON来计算数字的第x个根

    var index = $('#Index').val();
    var radicand = $('#Radicand').val();
    var powerXroot = Math.pow(radicand,(1/index))+(Number.EPSILON * Math.pow(radicand,(1/index)));

但它并不适用于所有指标。

1 个答案:

答案 0 :(得分:1)

您可以使用Math.round()获取结果的最接近整数。如果此整数在结果的0.000000001范围内,请将结果替换为整数。

比如说,你已经计算了var x = ...,并且如果它足够接近1则想要使它成为整数。

function roundIfAlmostInteger(x) {
  if (Math.abs(x - Math.round(x)) < 0.000000001) {
    x = Math.round(x);
  }
  return x;
}

插图:

x = 2.3 - 0.1 - 0.2;   // now x is 1.9999999999999998
x = roundIfAlmostInteger(x);          // now x is 2