包含jsmath源码的词条

本文目录一览:

js中的math对象有哪些常用的方法,其用法和作用是什么

abs(x)

返回数的绝对值。

acos(x)

返回数的反余弦值。

asin(x)

返回数的反正弦值。

atan(x)

以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。

atan2(y,x)

返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。

ceil(x)

对数进行上舍入。

cos(x)

返回数的余弦。

exp(x)

返回 e 的指数。

floor(x)

对数进行下舍入。

log(x)

返回数的自然对数(底为e)。

max(x,y)

返回 x 和 y 中的最高值。

min(x,y)

返回 x 和 y 中的最低值。

pow(x,y)

返回 x 的 y 次幂。

random()

返回 0 ~ 1 之间的随机数。

round(x)

把数四舍五入为最接近的整数。

sin(x)

返回数的正弦。

sqrt(x)

返回数的平方根。

tan(x)

返回角的正切。

toSource()

返回该对象的源代码。

valueOf()

返回 Math 对象的原始值。

作用和用法?数学函数需要什么用什么啊。

number-precision 实现js高精度运算 源码

type numType = number | string;

/**

* @desc 解决浮动运算问题,避免小数点后产生多位数和计算精度损失。

* 问题示例:2.3 + 2.4 = 4.699999999999999,1.0 – 0.9 = 0.09999999999999998

*/

/**

* 把错误的数据转正

* strip(0.09999999999999998)=0.1

*/

function strip(num: numType, precision = 15): number {

  return +parseFloat(Number(num).toPrecision(precision));

}

/**

* Return digits length of a number

* @param {*number} num Input number

*/

function digitLength(num: numType): number {

  // Get digit length of e

  const eSplit = num.toString().split(/[eE]/);

  const len = (eSplit[0].split(‘.’)[1] || ”).length – +(eSplit[1] || 0);

  return len 0 ? len : 0;

}

/**

* 把小数转成整数,支持科学计数法。如果是小数则放大成整数

* @param {*number} num 输入数

*/

function float2Fixed(num: numType): number {

  if (num.toString().indexOf(‘e’) === -1) {

    return Number(num.toString().replace(‘.’, ”));

  }

  const dLen = digitLength(num);

  return dLen 0 ? strip(Number(num) * Math.pow(10, dLen)) : Number(num);

}

/**

* 检测数字是否越界,如果越界给出提示

* @param {*number} num 输入数

*/

function checkBoundary(num: number) {

  if (_boundaryCheckingState) {

    if (num Number.MAX_SAFE_INTEGER || num Number.MIN_SAFE_INTEGER) {

      console.warn(`${num} is beyond boundary when transfer to integer, the results may not be accurate`);

    }

  }

}

/**

* 精确乘法

*/

function times(num1: numType, num2: numType, …others: numType[]): number {

  if (others.length 0) {

    return times(times(num1, num2), others[0], …others.slice(1));

  }

  const num1Changed = float2Fixed(num1);

  const num2Changed = float2Fixed(num2);

  const baseNum = digitLength(num1) + digitLength(num2);

  const leftValue = num1Changed * num2Changed;

  checkBoundary(leftValue);

  return leftValue / Math.pow(10, baseNum);

}

/**

* 精确加法

*/

function plus(num1: numType, num2: numType, …others: numType[]): number {

  if (others.length 0) {

    return plus(plus(num1, num2), others[0], …others.slice(1));

  }

  const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));

  return (times(num1, baseNum) + times(num2, baseNum)) / baseNum;

}

/**

* 精确减法

*/

function minus(num1: numType, num2: numType, …others: numType[]): number {

  if (others.length 0) {

    return minus(minus(num1, num2), others[0], …others.slice(1));

  }

  const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));

  return (times(num1, baseNum) – times(num2, baseNum)) / baseNum;

}

/**

* 精确除法

*/

function divide(num1: numType, num2: numType, …others: numType[]): number {

  if (others.length 0) {

    return divide(divide(num1, num2), others[0], …others.slice(1));

  }

  const num1Changed = float2Fixed(num1);

  const num2Changed = float2Fixed(num2);

  checkBoundary(num1Changed);

  checkBoundary(num2Changed);

  // fix: 类似 10 ** -4 为 0.00009999999999999999,strip 修正

  return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) – digitLength(num1))));

}

/**

* 四舍五入

*/

function round(num: numType, ratio: number): number {

  const base = Math.pow(10, ratio);

  return divide(Math.round(times(num, base)), base);

}

let _boundaryCheckingState = true;

/**

* 是否进行边界检查,默认开启

* @param flag 标记开关,true 为开启,false 为关闭,默认为 true

*/

// 这里可以设置边界检查(默认是true)

function enableBoundaryChecking(flag = true) {

  _boundaryCheckingState = flag;

}

// 输出上面的方法

export { strip, plus, minus, times, divide, round, digitLength, float2Fixed, enableBoundaryChecking };

export default {

  strip,

  plus,

  minus,

  times,

  divide,

  round,

  digitLength,

  float2Fixed,

  enableBoundaryChecking,

};

JavaScript Math.random()问题

那是因为javascript把min_num作为了默认字符串处理了。

只需要把var num=Math.random()*(max_num-min_num)+min_num;改一下就可以了

var num=Math.random()*(max_num-min_num)+min_num*1;

强制把min_num作为数字处理

JS中Math[this

在javascript中对象获取属性的方式有两种,一种是使用运算符“.”跟上属性名,一种是使用[‘属性名’]的方式。比如:

window.location 与window[‘location’]都可以访问到window对象的location属性。

点运算符(成员运算符)使用方便,但是在需要动态获取对象属性时,也就是说,我要获取的属性它的名称本身也是通过传参确定时,就需要使用方括号的方式,你现在就属于这种情况。如果你有过反射方面的编程经验就不难理解了。

js Math 对象的方法

1.丢弃小数部分,保留整数部分

parseInt(5/2)

2.向上取整,有小数就整数部分加1

Math.ceil(5/2)

3,四舍五入.

Math.round(5/2)

4,向下取整

Math.floor(5/2)

Math

对象方法

FF:

Firefox,

IE:

Internet

Explorer

方法

描述

FF

IE

abs(x)

返回数的绝对值。

1

3

acos(x)

返回数的反余弦值。

1

3

asin(x)

返回数的反正弦值。

1

3

atan(x)

以介于

-PI/2

PI/2

弧度之间的数值来返回

x

的反正切值。

1

3

atan2(y,x)

返回从

x

轴到点

(x,y)

的角度(介于

-PI/2

PI/2

弧度之间)。

1

3

ceil(x)

对数进行上舍入。

1

3

cos(x)

返回数的余弦。

1

3

exp(x)

返回

e

的指数。

1

3

floor(x)

对数进行下舍入。

1

3

log(x)

返回数的自然对数(底为e)。

1

3

max(x,y)

返回

x

y

中的最高值。

1

3

min(x,y)

返回

x

y

中的最低值。

1

3

pow(x,y)

返回

x

y

次幂。

1

3

random()

返回

~

1

之间的随机数。

1

3

round(x)

把数四舍五入为最接近的整数。

1

3

sin(x)

返回数的正弦。

1

3

sqrt(x)

返回数的平方根。

1

3

tan(x)

返回角的正切。

1

3

toSource()

返回该对象的源代码。

1

valueOf()

返回

Math

对象的原始值。

1

4

js中Math的几个函数

console.log(Object.getOwnPropertyNames(Math).filter((function (name) {

            return typeof Math[name] === ‘function’;

        })).length); //有35个函数

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/256990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-15 12:43
下一篇 2024-12-15 12:43

相关推荐

  • 云智直聘 源码分析

    本文将会对云智直聘的源码进行分析,包括前端页面和后端代码,帮助读者了解其架构、技术实现以及对一些常见的问题进行解决。通过本文的阅读,读者将会了解到云智直聘的特点、优势以及不足之处,…

    编程 2025-04-29
  • Python网站源码解析

    本文将从多个方面对Python网站源码进行详细解析,包括搭建网站、数据处理、安全性等内容。 一、搭建网站 Python是一种高级编程语言,适用于多种领域。它也可以用于搭建网站。最常…

    编程 2025-04-28
  • 源码是什么

    源码是一段计算机程序的原始代码,它是程序员所编写的可读性高、理解性强的文本。在计算机中,源码是指编写的程序代码,这些代码按照一定规则排列,被计算机识别并执行。 一、源码的组成 源码…

    编程 2025-04-27
  • Go源码阅读

    Go语言是Google推出的一门静态类型、编译型、并发型、语法简单的编程语言。它因具有简洁高效,内置GC等优秀特性,被越来越多的开发者所钟爱。在这篇文章中,我们将介绍如何从多个方面…

    编程 2025-04-27
  • Python怎么看源码

    本文将从以下几个方面详细介绍Python如何看源码,帮助读者更好地了解Python。 一、查看Python版本 在查看Python源码之前,首先需要确认Python版本。可以在命令…

    编程 2025-04-27
  • 源码审计面试题用法介绍

    在进行源码审计面试时,可能会遇到各种类型的问题,本文将以实例为基础,从多个方面对源码审计面试题进行详细阐述。 一、SQL注入 SQL注入是常见的一种攻击方式,攻击者通过在输入的参数…

    编程 2025-04-27
  • 对3ue源码的多方面阐述

    一、3ue源码简述 3ue是一款基于Vue.js开发的富文本编辑器,支持图片上传、粘贴、表格、代码块等多种功能,具有轻量、可定制、易扩展的特点。下面我们将从多个方面对3ue源码进行…

    编程 2025-04-22
  • 全面解析ptable:从使用到源码分析

    ptable是一个轻量级的DOM操作插件,主要用于表格的操作和功能增强。它的使用非常灵活,支持多种操作方式,包括添加、删除、修改、排序、筛选等,可以大大提高表格的效率和易用性。 一…

    编程 2025-04-22
  • 深入分析Redis源码

    一、Redis简介 Redis是一个开源的内存数据结构存储系统,可以用作数据库、缓存、消息队列等。Redis支持多种数据类型,包括字符串、哈希、列表、集合等。Redis基于C语言进…

    编程 2025-04-12
  • JDK源码阅读详解

    一、jdk源码阅读顺序 首先,在开始阅读JDK源码之前,需要按照正确的顺序来阅读代码。一般建议按照以下顺序进行阅读: 1. 先从Java SE的API入手,了解它提供了哪些功能,及…

    编程 2025-04-12

发表回复

登录后才能评论