所以我有一些數字x = 320232 y = 2301 z = 12020305。我想使用 JavaScript 對這些數字進行四舍五入,以便它們變成x = 320000 y = 2300 z = 12000000.
我試過Math.round,Math.floor但結果證明它們只適用于十進制值,
a = 3.1; Math.round(a); // Outputs 3而不是整數。
所以我的問題是我們可以使用 JavaScript 對整數進行舍入,如果是,那么如何?
編輯:我希望它四舍五入到起始的 3 位數位置,如上面的變數所示。就像如果有另一個名為c = 423841It 的變數應該四舍五入成為c = 424000.
uj5u.com熱心網友回復:
您可以使用十的對數并調整數字。
const
format = n => v => {
if (!v) return 0;
const l = Math.floor(Math.log10(Math.abs(v))) - n 1;
return Math.round(v / 10 ** l) * 10 ** l;
};
console.log([0, -9876, 320232, 2301, 12020305, 123456789].map(format(3)));
uj5u.com熱心網友回復:
解決方案是先計算需要舍入的數字有多少,然后在一輪中使用它。
Math.round(1234/100)*100將舍入到1200所以我們可以使用它來舍入。然后我們只需要確定在這個例子中用什么來替換 100。
也就是說,這將是一個 1 后跟LENGTH - 3零。這個數字可以計算為 10 的LENGTH - 3, 在 JS:的冪10 ** (length - 3)。
var x = 320232;
var y = 2301;
var z = 12020305;
function my_round(number){
var org_number = number;
// calculate integer number
var count = 0;
if (number >= 1) count;
while (number / 10 >= 1) {
number /= 10;
count;
}
// length - 3
count = Math.round(count) - 3;
if (count < 0){
count = 0;
}
// 10 to the power of (length - 3)
var helper = 10 ** count;
return Math.round(org_number/helper)*helper;
}
alert(my_round(x));
alert(my_round(y));
alert(my_round(z));
它不是最漂亮的代碼,盡管我試圖使它成為可解釋的代碼。
uj5u.com熱心網友回復:
這應該有效:
function roundToNthPlace(input, n) {
let powerOfTen = 10 ** n
return Math.round(input/powerOfTen) * powerOfTen;
}
console.log([320232, 2301,12020305, 423841].map(input => roundToNthPlace(input, 3)));
Output: [320000, 2000, 12020000, 424000]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/402042.html
標籤:javascript 数学
上一篇:Pythonsum()正在為兩個不同的串列計算相同的值
下一篇:如何通過我們知道Point1和Point2的位置和線Point1到Point2的長度以及線Point1到Point3的長度來找到Point3位置?
