首页 > 其他分享 >ts bigint和number的区别

ts bigint和number的区别

时间:2024-07-14 13:55:03浏览次数:13  
标签:运算 ts 整数 number bigint let 类型

在 TypeScript(以及 JavaScript)中,bigintnumber 是两种不同的数值类型,它们有一些显著的区别和特性。

区别和特性

  1. 表示范围

    • number:表示标准的双精度 64 位浮点数,可以表示的范围是从 -Number.MAX_SAFE_INTEGERNumber.MAX_SAFE_INTEGER(约为 ±9.2 × 10^15)。
    • bigint:可以表示任意精度的整数,不受位数限制。它可以处理超出 JavaScript 标准 number 范围的整数值。
  2. 字面量表示

    • number:使用常规数字字面量,如 123, 456.78
    • bigint:以 n 结尾的整数字面量,如 123n, 4567890123456789012345678901234567890n
  3. 运算

    • numberbigint 之间的运算是有区别的:
      • numbernumber 相互运算时,结果仍为 number 类型。
      • bigintbigint 相互运算时,结果为 bigint 类型。
      • numberbigint 进行运算时,需要注意类型转换。通常情况下,将 number 转换为 bigint 进行计算。
  4. 位运算

    • number 支持位运算,如按位与 (&)、按位或 (|)、按位异或 (^)、左移 (<<)、有符号右移 (>>)、无符号右移 (>>>)。
    • bigint 不支持位运算。
  5. 适用场景

    • number 适合处理需要小数或者标准整数范围内的计算。
    • bigint 适合处理需要大整数或超出标准整数范围的计算,例如密码学、大数字计算等场景。

示例比较

let num1: number = 123;
let num2: number = 456;
let bigInt1: bigint = 12345678901234567890n;
let bigInt2: bigint = 98765432109876543210n;

// number 和 number 相加,结果为 number
let result1 = num1 + num2; // result1 类型为 number

// bigint 和 bigint 相加,结果为 bigint
let result2 = bigInt1 + bigInt2; // result2 类型为 bigint

// number 和 bigint 相加,需要类型转换
let result3 = num1 + BigInt(bigInt1); // result3 类型为 bigint

console.log(result1, result2, result3);

在上面的示例中,展示了不同类型之间的加法运算,并且说明了结果的类型会根据运算数的类型而变化。

总结

bigintnumber 是 TypeScript 中用来表示数字的两种不同类型,每种类型有其独特的特性和适用场景。了解它们的区别可以帮助开发者在实际项目中选择合适的类型,以确保代码的正确性和性能。

标签:运算,ts,整数,number,bigint,let,类型
From: https://www.cnblogs.com/jocongmin/p/18301466

相关文章

  • 基于Ubuntu 24.04 LTS安装elasticsearch-8.14.3+Kibanna
    1.安装Elasticsearch1.1下载Elasticsearch#1.更新包索引sudoaptupdate#2.升级已安装的软件包sudoaptupgrade-y#3.进入/opt目录cd/opt#4.下载Elasticsearch压缩包sudowgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8......
  • 提升漏洞挖掘效率:详解RustScan端口快速扫描工具
    在漏洞挖掘过程中,梳理目标站点的资产面是至关重要的一步。这一过程通常需要进行全量端口扫描,以发现目标站点上所有可能的开放端口。然而,传统的端口扫描工具往往需要大量时间来完成这一任务,特别是在面对大量端口时。这不仅延长了整个漏洞挖掘的时间,还可能导致关键漏洞的发现......
  • java InputStream read使用及读取数据注意
    publicabstractintread()throwsIOException;从输入流中读取下一个字节的数据。值字节以int的形式返回,范围在0-255之间。如果由于到达流的末尾而没有字节可用,则返回值-1。此方法会一直阻塞,直到输入数据可用、检测到流结束或抛出异常为止。 publicintread(byteb[],i......
  • 使用 pip 和 requirements.txt 安装 Python 包
    1.构建当前项目需要的软件包pip3installpipreqspip3installpip-toolspipreqs--savepath=requirements.in&&pip-compile1.根据配置文件批量安装软件包。requirements.txt在某些环境中,可使用pip3而不是pippipinstall-rrequirements.txt2.检查当前环境......
  • ts vue3 自定义指令
    当然,以下是将前面两个步骤汇总到一起的完整实现方案:1.定义指令首先,在src/directives文件夹中创建你的自定义指令文件。例如,v-focus.ts和v-color.ts:v-focus.ts:import{Directive}from'vue';constvFocus:Directive={mounted(el){el.focus();}};ex......
  • unplugin-vue-components 简介
    unplugin-vue-components简介unplugin-vue-components是一个用于自动导入Vue组件的插件,能够在Vue3项目中简化组件的使用,无需手动导入每个组件。它支持按需加载,提高开发效率。安装使用npm或yarn安装插件:npminstall-Dunplugin-vue-components或yarnadd-Dunp......
  • ts vue3 element-plus 自建可配置表单弹窗实现
    当然可以!下面是使用TypeScript语法的动态表单弹出组件示例。1.创建动态表单弹出组件(TypeScript)<template><el-dialog:visible.sync="visible"title="表单"@close="handleClose"><el-form:model="formData":rules="rules"......
  • FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作
    ​《FFmpeg开发实战:从零基础到短视频上线》一书的“2.1.2 音视频文件的封装格式”介绍了视频流的PS格式和TS格式。由于TS包的长度固定,从TS流的任一片段开始都能独立解码,因此可以把TS当成音视频文件的封装格式。鉴于TS包的独立解码特性,HLS协议引入了TS格式作为传输单元。HLS协......
  • 可视化课设总结(星巴克网页爬取信息,百度地图网页版爬取信息,百度地图api,pyecharts库,pyth
    一、引言       本博客是本人是基于本人可视化课设所做的总结,其中有些过程的实现可能并不是最优的实现方法,有些实现效果也因为本人的实力有限,并不能达到预期的效果,所以也欢迎大家指点和改良。(刚考完期末回家,终于有时间把这个课设写个博客了,虽然这课设是明天截至的,我今......
  • props与emits
    在Vue3中,父子组件之间的数据传递是一个常见的需求。本文将介绍如何在Vue3中传递对象,并且在子组件中访问和修改父组件对象中的属性值,以及子组件如何调用父组件中的方法。在Vue3中,父子组件之间传值有以下作用:1.组件通信:父组件可以通过向子组件传递数据来实现与子组件的......