xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

JavaScript Math.trunc vs Math.floor All In One

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, 禁止转载 🈲️,侵权必究⚠️!


posted @ 2024-06-03 00:44  xgqfrms  阅读(20)  评论(0编辑  收藏  举报