张安妮
宣布于 红山网
+关注
91n在 JavaScript 代码中通常体现一个值为 91 的 BigInt 整数,,,末尾的 n 是 BigInt 字面量后缀。。。它不是“91 乘以 n”,,,也不是通俗的 Number 数字。。。简朴来说,,,91 和 91n 体现的数值看起来相同,,,但在 JavaScript 中属于两种差别的数据类型,,,盘算规则也不完全一样。。。
91n究竟体现什么??
JavaScript 使用 BigInt 类型处置惩罚整数,,,主要用于体现凌驾 Number 清静精度规模的大整数。。。直接在整数后面添加小写 n,,,就可以写成 BigInt 字面量,,,例如 91n、1000000000000000000n。。。
因此,,,91n可以拆解为两部清楚确:91是整数值,,,n说明这个整数属于 BigInt 类型。。。使用 typeof 91n 检查时,,,返回效果是 bigint,,,而使用 typeof 91 检查时,,,返回效果是 number。。。
虽然 91 这个数字自己很。。。,,用通俗 Number 完万能够准确体现,,,但开发者仍然可以使用 91n,,,例如为了让一组订单编号、数据库主键或计数值坚持 BigInt 类型一致。。。
91n和91为什么不可直接当成统一种数字??
91 与 91n 的主要区别
| 写法 |
数据类型 |
典范特点 |
| 91 |
Number |
通俗 JavaScript 数字,,,可以体现整数和小数 |
| 91n |
BigInt |
只体现整数,,,适合举行大整数运算 |
| 91.5 |
Number |
可以体现小数 |
| 91.5n |
无效写法 |
BigInt 不可直接写成小数形式 |
最容易遇到的区别是混淆盘算。。。两个 BigInt 之间可以正常举行整数运算,,,例如 91n + 9n 的效果是 100n。。。但 91n + 9 同时包括 BigInt 和 Number,,,通常;;;崤壮隼嘈凸。。。JavaScript 不会自动替开发者决议应该把哪一种数字转换成另一种类型。。。
若是确实需要运算,,,可以先统一类型。。。把通俗整数转换为 BigInt,,,可以使用 BigInt(9);;;;把 BigInt 转换成 Number,,,可以使用 Number(91n)。。。不过,,,大整数转换成 Number 后可能失去精度,,,以是只有在数值确定不会凌驾 Number 清静规模时,,,才适合这样处置惩罚。。。
较量运算也有细微差别。。。91n == 91 的效果可以为 true,,,由于宽松相等会举行类型转换;;;;但 91n === 91 的效果是 false,,,由于严酷相等要求数据类型也相同。。。若代码需要明确区分 Number 和 BigInt,,,通常应优先关注严酷较量效果。。。
使用91n举行盘算时要注重哪些规则??
BigInt 可以举行加、减、乘、除和取余等整数运算。。。例如,,,91n * 2n 的效果是 182n,,,91n % 10n 的效果是 1n。。。但除法不会保存小数部分,,,91n / 10n 的效果是 9n,,,而不是 9.1。。。
BigInt 只适合整数。。。若是营业中需要金额小数、比例、平均值或科学盘算,,,直接使用 BigInt 可能不对适。。。此时可以凭证营业规则使用 Number、字符串盘算方法或专门的高精度盘算计划。。。选择 BigInt 的条件,,,是盘算工具自己应当是整数,,,并且需要阻止通俗 Number 的精度限制。。。
BigInt 也不可直接与部分 Number 专用要领混用。。。例如,,,Math.round(91n) 这类写法并不适相助为通俗数字处置惩罚方法。。。使用数学函数前,,,需要先确认函数是否支持 BigInt,,,或者在能够包管精度的条件下转换为 Number。。。
在变量声明中,,,下面的写法体现变量生涯的是 BigInt:
const total = 91n;
const nextTotal = total + 9n;
此时 nextTotal 的值是 100n,,,而不是通俗的 100。。。若是后续还要加入 BigInt 运算,,,相关数字也应当带上小写 n。。。
91n用于接口或数据传输时,,,为什么经常需要转换??
在开发中,,,BigInt 常被用于数据库自增主键、订单编号、用户编号或时间序列计数。。。它在程序内部盘算没有问题,,,但在接口传输时,,,不可默认把它当成通俗 JSON 数字处置惩罚。。。常见的 JSON.stringify({ id: 91n }) 会由于 BigInt 没有默认的 JSON 序列化方法而报错。。。
若是接口只需要展示编号,,,通??梢韵茸勺址,,例如把 91n 转成 "91" 后再传输。。。这样做尤其适合可能凌驾前端 Number 清静规模的长编号,,,由于字符串不会被浏览器按通俗数字重新盘算。。。接口吸收后,,,若是确实需要举行整数运算,,,再凭证字段约定转换为 BigInt。。。
若是接口双方明确约定转达的是通俗清静规模内的数字,,,也可以转换成 Number,,,但这种做法不适合位数很长的编号。。。编号通常不需要做加减运算时,,,使用字符串往往比强行转换成 Number 更稳妥。。。
看到91n时,,,怎样判断它是不是BigInt??
首先看它是否泛起在 JavaScript 或支持 BigInt 语法的 TypeScript 源码中。。。若是它位于赋值、盘算、函数参数或数组数据里,,,并且写法是一连的数字加小写 n,,,那么它或许率就是 BigInt 字面量。。。例如 const id = 91n 体现把 BigInt 值赋给变量。。。
其次看周围是否保存 BigInt 运算。。。若是周围泛起 1n、100n、BigInt() 或与大整数编号相关的处置惩罚,,,基本可以确定这里的 91n 是程序数值,,,而不是通俗文本。。。
若是 91n泛起在网页文字、数据库字段、文件名、平台标签或接口返回的字符串中,,,就不可仅凭这几个字符断定它代表 BigInt。。。此时它可能只是营业编号、内部标识、内容标签,,,也可能是输入过失。。。只有放回详细语言和上下文,,,才华确定它的寄义。。。
还要注重巨细写和标点:JavaScript 的 BigInt 字面量使用小写 n,,,以是 91n与 91N不是统一种写法;;;;在代码中改变巨细写或加入逗号、空格,,,也可能改变语法剖析效果。。。综合来看,,,在 JavaScript 代码里,,,91n的标准寄义就是值为91的BigInt整数;;;;脱离代码语境时,,,它纷歧定具有统一寄义。。。
vkpkrylf6npvx0coof0dacuslsgm