英里和英里到英尺转换的脚

时间:2018-04-17 19:04:19

标签: angular unit-conversion

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

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

当我给出5280英尺= 1英里的确切数字时,圆形工作正常但是当我给出一些大约6200英尺的数字时,它在数据库中节省了1.23英里并且在转换中获得了像6177.60这样的转换所以听起来有问题转换,因为实际值从6200变为6177.60。

第二个问题如果我在保存数据库之前删除了圆形,那么它在db中保存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;
  }

1 个答案:

答案 0 :(得分:0)

毕竟终于做了一些R&amp; D转换公式我得到了解决方案。

简单地说,我改变了公式,它的工作就像一个魅力。

新公式如下所示。

convertFeetToMiles(feet) {
    return feet / 5280;
  }

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

使用这个公式,它给出了精确的里程值,即从db检索时,5280英尺= 1英里,1英里= 5280。

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