确定数值是否在非特定整数的某个边距内

Determine if a numerical value is within some margin of a non-specific integer

本文关键字:非特 是否 整数      更新时间:2023-09-26

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

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

注意:我尝试在计算数字的第x根的函数中使用Number.EPSILON,如下所示

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

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

您可以使用

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