JavaScript Math.trunc vs Math.floor All In One
JavaScript
Math
Math.trunc()
直接擷取
掉小數
部分, 負數不會向下取整 ⚠️
console.log(Math.trunc(7));
// 7
console.log(Math.trunc(7.1));
// 7
console.log(Math.trunc(7.5));
// 7
console.log(Math.trunc(7.9));
// 7
console.log(Math.trunc(-3));
// -3
console.log(Math.trunc(-3.1));
// -3 ⚠️ 負數不會向下取整 ❌
console.log(Math.trunc(-3.5));
// -3 ⚠️ 負數不會向下取整 ❌
console.log(Math.trunc(-3.9));
// -3 ⚠️ 負數不會向下取整 ❌
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc
Math.floor()
向下取整, 負數會向下取整 ✅
console.log(Math.floor(7));
// 7
console.log(Math.floor(7.1));
// 7
console.log(Math.floor(7.5));
// 7
console.log(Math.floor(7.9));
// 7
console.log(Math.floor(-3));
// -3
console.log(Math.floor(-3.1));
// -4 負數會向下取整 ✅
console.log(Math.floor(-3.5));
// -4 負數會向下取整 ✅
console.log(Math.floor(-3.9));
// -4 負數會向下取整 ✅
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
demos
Math.floor()
向下取整
/**
* Forward declaration of guess API.
* @param {number} num your guess
* @return -1 if num is higher than the picked number
* 1 if num is lower than the picked number
* otherwise return 0
* var guess = function(num) {}
*/
function guessNumber(n: number): number {
// 二分搜尋 / 二分查詢
let left = 0;
let right = n;
while(left !== right) {
let mid = Math.floor((left + right) / 2);
let temp = guess(mid);
if(temp === 0) {
return mid;
}
if(temp === -1) {
// num > pick
right = mid;
}
if(temp === 1) {
// num < pick
left = mid + 1;
}
}
return left;
};
Math.trunc()
擷取掉小數部分
function guessNumber(n: number): number {
// 二分搜尋 / 二分查詢
let low = 1;
let high = n;
while(low <= high){
let mid = Math.trunc((low + high) / 2);
// let mid = Math.floor((low + high) / 2);
let pick = guess(mid);
if(pick === 0){
return mid;
} else if(pick === 1) {
low = mid + 1;
// } else if(pick === -1) {
} else {
high = mid - 1;
}
}
};
https://leetcode.com/problems/guess-number-higher-or-lower/?envType=study-plan-v2&envId=leetcode-75
(🐞 反爬蟲測試!打擊盜版⚠️)如果你看到這個資訊, 說明這是一篇剽竊的文章,請訪問 https://www.cnblogs.com/xgqfrms/ 檢視原創文章!
LeetCode 75
Ace Coding Interview with 75 Qs
https://leetcode.com/studyplan/leetcode-75/
AI
s
prompt = 作為一名 JavaScript 技術專家, 請詳細解釋一下 Math.trunc 與 Math.floor 區別和各自的優缺點
https://chatgpt.com/
作為一名 JavaScript 技術專家,我很高興為您解釋
Math.trunc()
和Math.floor()
的區別以及各自的優缺點。
-
定義:
Math.trunc()
函式返回一個數的整數部分。它會將數字的小數部分去掉,只保留整數部分。Math.floor()
函式返回小於或等於一個給定數字的最大整數。它會將數字向下舍入到最接近的整數。
-
區別:
Math.trunc()
會直接去掉數字的小數部分,不管正負號。Math.floor()
會根據數字的正負號進行不同的舍入操作。對於正數,它會向下舍入到最接近的整數;對於負數,它會向下舍入到最接近的整數(即更小的整數)。
-
優缺點:
Math.trunc()
的優點是:- 簡單直接,不需要考慮正負號的問題。
- 對於接近整數的小數,它的結果更加直觀和易於理解。
Math.trunc()
的缺點是:- 對於負數,它的行為可能與人們的預期不一致。例如,
Math.trunc(-1.5)
的結果是-1
,而不是-2
。
- 對於負數,它的行為可能與人們的預期不一致。例如,
Math.floor()
的優點是:- 對於正數和負數,它的行為更加符合人們的預期。
- 對於需要向下取整的場景,它更加適用。
Math.floor()
的缺點是:- 需要考慮正負號的問題,稍微複雜一些。
總的來說,Math.trunc()
和 Math.floor()
都是 JavaScript 中常用的數學函式,它們在不同的場景下有各自的優勢。開發者需要根據具體的需求和場景,選擇合適的函式來使用。
https://duckduckgo.com/?q=DuckDuckGo&ia=chat
https://gemini.google.com/app
refs
©xgqfrms 2012-2021
www.cnblogs.com/xgqfrms 釋出文章使用:只允許註冊使用者才可以訪問!
原創文章,版權所有©️xgqfrms, 禁止轉載 🈲️,侵權必究⚠️!