JavaScript Math.trunc vs Math.floor All In One

xgqfrms發表於2024-06-03

JavaScript Math.trunc vs Math.floor All In One

JavaScript Math

image

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/

AIs

prompt = 作為一名 JavaScript 技術專家, 請詳細解釋一下 Math.trunc 與 Math.floor 區別和各自的優缺點

https://chatgpt.com/

作為一名 JavaScript 技術專家,我很高興為您解釋 Math.trunc()Math.floor() 的區別以及各自的優缺點。

  1. 定義:

    • Math.trunc() 函式返回一個數的整數部分。它會將數字的小數部分去掉,只保留整數部分。
    • Math.floor() 函式返回小於或等於一個給定數字的最大整數。它會將數字向下舍入到最接近的整數。
  2. 區別:

    • Math.trunc() 會直接去掉數字的小數部分,不管正負號。
    • Math.floor() 會根據數字的正負號進行不同的舍入操作。對於正數,它會向下舍入到最接近的整數;對於負數,它會向下舍入到最接近的整數(即更小的整數)。
  3. 優缺點:

    • 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, 禁止轉載 🈲️,侵權必究⚠️!


相關文章