我正在使用以下公式将英尺转换为英里和英里到英尺。
在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;
}
答案 0 :(得分:0)
毕竟终于做了一些R&amp; D转换公式我得到了解决方案。
简单地说,我改变了公式,它的工作就像一个魅力。
新公式如下所示。
convertFeetToMiles(feet) {
return feet / 5280;
}
convertMilesToFeet(miles) {
return Math.round(miles * 5280);
}
使用这个公式,它给出了精确的里程值,即从db检索时,5280英尺= 1英里,1英里= 5280。
我希望这对那些也寻求同样解决方案的人有所帮助。