我正在嘗試找到解決方案,但似乎沒有堆疊溢位的情況,其中十進制精度需要是動態的。所以我正在創建一個反應加密專案,并試圖讓它在我可以動態洗掉小數位后的數字的地方。這就是我的意思。
我目前正在動態渲染精度,如下所示:
const precision = pairType === 'base' ? selectedBaseCurrencyObj.precision.amount : selectedBaseCurrencyObj.precision.cost;
Number(assetObj.freeTotal).toFixed(precision)
“精度”是動態的,將從我創建的以后的 api 回傳。現在我搜索了整個stackoverflow,并試圖看看如何在不四舍五入的情況下實作這一目標。想知道是否有一種簡單的方法可以用其他一些 js 方法將圖形的其余部分剪掉,這也不會阻止它四舍五入
uj5u.com熱心網友回復:
如果只是將某個數字的尾數截斷到一定長度,那么可以使用Math.trunc方法輕松完成:
const truncate = (n, precision) => {
const f = Math.pow(10, Math.max(precision | 0, 0)) * 10;
return Math.trunc(n * f) / f;
};
console.log(truncate(1234.56789, 0));
console.log(truncate(1234.56789, 3));
console.log(truncate(1234.56789, 6));
但是,如果它是toFixed在避免舍入的同時模仿方法,那么它就有點難了:
const toFixed = (n, precision) => {
const s = `${n}`, i = `${n}`.split('.'), p = Math.max(precision | 0, 0);
return i[0] (p ? `.${(i[1] ?? '').padEnd(p, '0')}`.slice(0, p 1) : '');
};
console.log(toFixed(1234.56789, 0), (1234.56789).toFixed(0));
console.log(toFixed(1234.56789, 3), (1234.56789).toFixed(3));
console.log(toFixed(1234.56789, 6), (1234.56789).toFixed(6));
uj5u.com熱心網友回復:
您可以將輸入的數字轉換為字串,用“.”分割。然后回傳陣列的第一個元素和陣列第二個元素的一部分,最后轉換回Number
例子:
let num = 23.987654321
const trimDecimalWithPrecision = (num, precision) => {
var splittedNum = num.toString().split(".")
if(precision === 0 || !num.toString().includes(".")) return Number(splittedNum[0])
else {
return Number(splittedNum[0] "." splittedNum[1].substring(0, precision))
}
}
console.log(trimDecimalWithPrecision(num, 0)) // Output => 23
console.log(trimDecimalWithPrecision(num, 1)) // Output => 23.9
console.log(trimDecimalWithPrecision(num, 2)) // Output => 23.98
console.log(trimDecimalWithPrecision(num, 3)) // Output => 23.987
console.log(trimDecimalWithPrecision(num, 4)) // Output => 23.9876
因此,在您的情況下,您希望擁有:
const trimDecimalWithPrecision = (num, precision) => {
var splittedNum = num.toString().split(".")
if(precision === 0 || !num.toString().includes(".")) return Number(splittedNum[0])
else {
return Number(splittedNum[0] "." splittedNum[1].substring(0, precision))
}
}
const precision = pairType === 'base' ? selectedBaseCurrencyObj.precision.amount : selectedBaseCurrencyObj.precision.cost;
trimDecimalWithPrecision(assetObj.freeTotal, precision)
編輯:為要運行的片段添加了 console.log
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/515350.html
下一篇:如何計算兩個矩形角之間的距離
