typeScript 之 Number

工具: PlayeGround

源码: GitHub TypeScript


简介

数字的基本类型是number,它是双精度64位浮点数,在TypeScript和JavaScript中没有整数。

但是他们支持使用Number对象,它是对原始数值的包装对象。

const value = new Number(param);

注意参数类型为any类型,如果不能够转换为数字,将返回Nan(非数字值)null

const data = new Number("Hello");
console.log(data);									// Number: null 

对于Number的属性相关如下:

属性名返回类型描述
MAX_VALUEnumber可表示的最大数值,1.79E+308
MIN_VALUEnumber可表示的最小数值 5.00E-324
NaNnumber非数字数值, 即使在相等比较中,它不等于自己
NEGATIVE_INFINITYnumber负无穷大,溢出时返回该值。该值小于 MIN_VALUE
POSITIVE_INFINITYnumber正无穷大,溢出时返回该值。该值大于 MAX_VALUE
toStringstring使用指定的基数转换为字符串,基数是[2,36]之间的整数,默认为10
toLocaleStringstring把数字转换为字符串
toFixedstring将数字转换为字符串,并设置小数点后的位数,范围在[0,20]之间, 存在四舍五入的问题
toExponentialstring将数字转换为指数计数的字符串,小数点后的位数范围在[0, 20]之间, 存在四舍五入的问题
toPrecisionstring将数字转换为指定长度的字符串,有效数字个数在[1,21]之间, 不存在四舍五入的问题
valueOfnumber返回Number对象的原始数字值

属性变量

源码相关:

interface NumberConstructor {// 创建Number对象, 参数为any类型new(value?: any): Number;(value?: any): number;readonly prototype: Number;// 可表示的最大数值 1.79E+308readonly MAX_VALUE: number;// 可表示的最小数值 5.00E-324readonly MIN_VALUE: number;// 非数字数值, 即使在相等比较中,它不等于自己readonly NaN: number;// 负无穷大,溢出时返回该值。该值小于 MIN_VALUEreadonly NEGATIVE_INFINITY: number;// 正无穷大,溢出时返回该值。该值大于 MAX_VALUE。readonly POSITIVE_INFINITY: number;
}
declare var Number: NumberConstructor;

简单的实例:

console.log("最大值为: " + Number.MAX_VALUE); 
console.log("最小值为: " + Number.MIN_VALUE); 
console.log("负无穷大: " + Number.NEGATIVE_INFINITY); 
console.log("正无穷大:" + Number.POSITIVE_INFINITY);
console.log(Number.NEGATIVE_INFINITY < Number.MIN_VALUE);       // true 
console.log(Number.POSITIVE_INFINITY > Number.MAX_VALUE);       // true 

针对于正负无穷大,它返回的数据为Infinity:

const minValue = Number.NEGATIVE_INFINITY;
const maxValue = Number.POSITIVE_INFINITY;
console.log(minValue);			// -Infinity 
console.log(maxValue);			// Infinity

针对于Nan,要注意,它不等于任何值,包括它自己

console.log(10 !== NaN);            // true
console.log(NaN == NaN);            // false 

方法

源码相关

interface Number {// 使用指定的基数转换为字符串,基数是[2,36]之间的整数,默认为10toString(radix?: number): string;// 将数字转换为字符串,并设置小数点后的位数,范围在[0,20]之间toFixed(fractionDigits?: number): string;// 将数字转换为指数计数的字符串,小数点后的位数范围在[0, 20]之间toExponential(fractionDigits?: number): string;// 将数字转换为指定长度的字符串,有效数字个数在[1,21]之间toPrecision(precision?: number): string;// 返回Number对象的原始数字值valueOf(): number;
}interface Number {// 把数字转换为字符串,使用本地数字格式顺序toLocaleString(locales?: string | string[], options?: Intl.NumberFormatOptions): string;
}
  • toString 转换为指定进制字符串, 基数范围[2, 36]
const value = new Number(10);
// 没有基数,则默认十进制
console.log(value.toString());      // 10
// 二进制
console.log(value.toString(2));     // 1010

注意: 进制的范围[2, 36]之间,否则报错: toString() radix argument must be between 2 and 36


  • toLocaleStringtoString相比较,在数字四位数的时候比较明显
const value = new Number(1234.56789);
// 直接转换
console.log(value.toString());				// 1234.56789
// 每三位会有逗号间隔
console.log(value.toLocaleString());	// 1,234.568

  • toFixed 转换为保留指定位数小数,小数位数范围在[0,20]
const value = new Number(1.567123);
// 不保留小数
console.log(value.toFixed());           // 2
// 保留两位小数
console.log(value.toFixed(2));          // 1.57

注意: 会存在四舍五入的情况


  • toExponential 转换为指数字符串, 小数位数范围在[0, 20]
const value = new Number(12375.73);
// 未设定,则保留所有
console.log(value.toExponential());           // 1.237573e+4
// 保留两位小数, 会存在四舍五入
console.log(value.toExponential(2));          // 1.24e+4

注意: 会存在四舍五入的情况


  • toPrecision 转换为指定长度的字符串,有效数字个数范围[1,21]
const value = new Number(1.5367);
// 未设定,则保留所有
console.log(value.toPrecision());           // 1.5367
// 保留两位小数, 不会四舍五入
console.log(value.toPrecision(2));          // 1.5

如果对精度要求比较高,推荐使用该方法。


  • valueOf 获取原型的number数据
const value = new Number(1234);
console.log(typeof(value));     // "object" const num:any = value.valueOf();    
console.log(num, typeof(num));  // 1234,  "number"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/33407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云宣布VPC网络架构重磅升级,可毫秒级感知网络故障并实现自愈

8月11日&#xff0c;腾讯云宣布VPC&#xff08;Virtual Private Cloud&#xff0c;云私有网络&#xff09;架构重磅升级。新架构采用多项腾讯核心自研技术&#xff0c;能够支撑用户构建业界最大 300万节点超大规模单VPC网络&#xff0c;并将转发性能最大提升至业界领先的200Gbp…

Linux 虚拟内存入门

在计算机系统中&#xff0c;物理内存是一种有限的资源&#xff0c;即使该系统支持内存扩展&#xff08;多插几根内存条&#xff09;&#xff0c;但是对于内存的安装也有最大限制。物理内存不一定是连续的&#xff0c;它可以作为一个不同地址的集合进行访问&#xff1b; 此外&am…

06 为什么需要多线程;多线程的优缺点;程序 进程 线程之间的关系;进程和线程之间的区别

为什么需要多线程 CPU、内存、IO之间的性能差异巨大多核心CPU的发展线程的本质是增加一个可以执行代码工人 多线程的优点 多个执行流&#xff0c;并行执行。&#xff08;多个工人&#xff0c;干不一样的活&#xff09; 多线程的缺点 上下文切换慢&#xff0c;切换上下文典型值…

Python Opencv实践 - 在图像上绘制图形

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png") print(img.shape)plt.imshow(img[:,:,::-1])#画直线 #cv.line(img,start,end,color,thickness) #参考资料&#xff1a;https://blog.csdn.ne…

81 | Python可视化篇 —— Seaborn数据可视化

Seaborn是Python中一个基于Matplotlib的高级数据可视化库,它提供了更简单的API和更美观的图形样式,适用于数据探索和展示。在本教程中,我们将介绍Seaborn的基本概念和用法,并通过一些示例演示如何使用Seaborn来创建各种图表和图形。 文章目录 1. 导入Seaborn库和数据2. 数据…

复古游戏库管理器RomM

什么是 RomM &#xff1f; RomM&#xff08;代表 Rom Manager&#xff09;是一个专注于复古游戏的游戏库管理器。通过 Web 浏览器管理和组织您的所有游戏。受 Jellyfin 的启发&#xff0c;允许您从现代界面管理所有游戏&#xff0c;同时使用 IGDB 元数据丰富它们。 RomM 支持的…

机器学习:隐马尔可夫模型(HMM)

后续会回来补充代码 1 隐马尔可夫模型 隐马尔可夫模型(Hidden Markov Model,HMM)是可用于标注问题的统计学模型&#xff0c;描述由隐藏的马尔可夫链随机生成观测序列的过程。 1.1 数学定义 隐马尔可夫模型是关于时序的概率模型&#xff0c;描述由一个隐藏的马尔可夫链随机生成…

Hbase-面试题

1. Hbase-region切分 自动切分&#xff0c;默认情况下 2.0版本&#xff0c;第一次region的数据达到256M&#xff0c;会进行切分&#xff0c;以后就是每达到10G切分一次&#xff0c;切分完成后&#xff0c;会进行负载均衡&#xff0c;均衡到其他regionserver预分区自定义rowke…

数据治理-组织变革

为什么要有组织变革 组织变更的原因是&#xff0c;数据管理&#xff0c;对大多数企业而言&#xff0c;意味着原有的思维理念、工作模式、写作方式和信息技术的改变。这些改变无法依赖单纯的技术创新优化实现&#xff0c;而是通过组织管理的变更来实现。 数据管理成功实践的机制…

二叉树的完全性检验

给定一个二叉树的 root &#xff0c;确定它是否是一个 完全二叉树 。 在一个 完全二叉树 中&#xff0c;除了最后一个关卡外&#xff0c;所有关卡都是完全被填满的&#xff0c;并且最后一个关卡中的所有节点都是尽可能靠左的。它可以包含 1 到 2h 节点之间的最后一级 h 。 示…

【算法挨揍日记】day02——双指针算法_快乐数、盛最多水的容器

202. 快乐数 202. 快乐数https://leetcode.cn/problems/happy-number/ 题目&#xff1a; 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个…

【C#】获取已安装的应用名称、启动路径、安装位置、产品代码、卸载字符串等

代码 /// <summary>/// Windows信息/// </summary>public partial class WindowsInfo{private static List<AppInfo> GetInstalledAppInfos(){List<AppInfo> appInfos new List<AppInfo>();string SameApp "";void AddApp(RegistryK…

宋浩高等数学笔记(十一)曲线积分与曲面积分

个人认为同济高数乃至数学一中最烧脑的一章。。。重点在于计算方式的掌握&#xff0c;如果理解不了可以暂时不强求&#xff0c;背熟积分公式即可。此外本贴暂时忽略两类曲面积分之间的联系&#xff0c;以及高斯公式的相关内容&#xff0c;日后会尽快更新&#xff0c;争取高效率…

PHP 之房贷计算器、组合贷

一、等额本金 // &#xff08;等额本金&#xff09; //$loanAmount>贷款金额 //$loanPeriod>贷款年限 //$interestRate>贷款利息 function calculateEqualPrincipalPayment($loanAmount, $loanPeriod, $interestRate) {$monthlyPrincipal $loanAmount / ($loanPerio…

【数据结构】二叉树常见题目

文章目录 前言二叉树概念满二叉树完全二叉树二叉搜索树(二叉排序树)平衡⼆叉搜索树存储⽅式 二叉树OJ二叉树创建字符串二叉树的分层遍历1二叉树的分层遍历2给定一个二叉树, 找到该树中两个指定节点的最近公共祖先二叉树搜索树转换成排序双向链表二叉树展开为链表根据一棵树的前…

Linux(centos7)无nc命令

起因 网上傻x特别多&#xff0c;下个东西要积分&#xff0c;直接分享一波 rpm包 https://www.123pan.com/s/lUl7Vv-0Qvl3.html提取码:PD1J 安装命令 rpm -ivh nc-1.84-24.el6.x86_64.rpm

MATLAB——使用建立好的神经网络进行分类程序

学习目标&#xff1a;使用建立好的神经网络&#xff08;训练好并保存&#xff0c;下次直接调用该神经网络&#xff09;进行分类 clear all; close all; P[-0.4 -0.4 0.5 -0.2 -0.7;-0.6 0.6 -0.4 0.3 0.8]; %输入向量 T[1 1 0 0 1]; …

山东布谷科技直播系统源码热点分析:不同芯片实现高质量编码与渲染视频的GPU加速功能

在现代科技的迅猛发展下&#xff0c;直播系统源码平台被开发搭建出来&#xff0c;为人们的生活方式带来了很大的改变&#xff0c;直播系统源码平台的好友、短视频、直播、社区等功能让很多人越来越热衷于去在平台上刷视频、看直播、分享生活。用户的喜爱也督促了直播系统源码平…

nodejs+vue+elementui小区物业管理系统_78ahx

课题主要分为四大模块&#xff1a;即管理员模块&#xff0c;物业管理模块、业主模块和维修员模块&#xff0c;主要功能包括&#xff1a;个人中心、物业管理、业主管理、维修员管理、小区公告管理、小区信息管理、房产信息管理、车位信息管理、停车位管理、停车信息管理、缴费信…

Grafana技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》-附带监控服务器

阿丹&#xff1a; Prometheus技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》_一单成的博客-CSDN博客 在正确安装了Prometheus之后开始使用并安装Grafana作为Prometheus的仪表盘。 一、拉取镜像 搜索可拉取版本 docker search Grafana拉取镜像 docker pull gra…