0

我正在使用以下公式将英尺转换为英里,将英里转换为英尺。

在保存到 db 之前,我将值从 Feet 转换为 Miles,在从 db 获取期间,我将它转换回 Feet。我在下面的代码部分中提到了两个公式。

当我给出确切的数字(如 5280 英尺 = 1 英里)时,它适用于圆形,但当我给出一些近似数字(如 6200 英尺)时,它在 db 中节省了 1.23 英里,在转换过程中像 6177.60 一样,所以听起来转换中存在问题,因为实际值从 6200 更改为 6177.60。

第二个问题如果我在保存数据库之前删除轮次,那么它会在数据库中保存 5280 英尺 = 0.99999999792 英里,并且在后端计算期间会产生问题,需要精确的英里值,我们不能在那里应用轮次。

所以我正在寻找在 db 中保存精确转换(如 5280 英尺 = 1 英里)并且在获取期间不改变英尺值的解决方案。

  convertFeetToMiles(feet) {
    return this.roundTo(feet * 0.000189393939, 5);
  }

  convertMilesToFeet(miles) {
    return this.roundTo(miles * 5280.0, 2);
  }

  roundTo(n, digits) {
    var negative = false;

    if (digits === undefined) {
      digits = 0;
    }
    if (n < 0) {
      negative = true;
      n = n * -1;
    }

    const multiplicator = Math.pow(10, digits);
    n = parseFloat((n * multiplicator).toFixed(11));
    n = (Math.round(n) / multiplicator).toFixed(2);
    if (negative) {
      n = (n * -1).toFixed(2);
    }

    return n;
  }
4

1 回答 1

1

毕竟终于在转换公式上做了一些研发,我得到了解决方案。

只是我改变了公式,它就像一个魅力。

新公式如下。

convertFeetToMiles(feet) {
    return feet / 5280;
  }

  convertMilesToFeet(miles) {
    return Math.round(miles * 5280);
  }

使用这个公式,它给了我准确的英里值,即 5280 英尺 = 1 英里和 1 英里 = 5280 在从 db 检索期间。

我希望这对那些也在寻找相同解决方案的人有所帮助。

于 2018-04-23T19:16:45.890 回答