我正在使用以下公式将英尺转换为英里,将英里转换为英尺。
在保存到 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;
}