Angular JavaScript';最大安全整数';|大数字(大于16位)将替换为0

Angular JavaScript';最大安全整数';|大数字(大于16位)将替换为0,angular,typescript,Angular,Typescript,我在angular应用程序中有一个POST请求,其中事务ID将作为数字(而不是字符串)发送。但当数字长度大于17时,第17位后的数字将更改为0 当类型为文本时,不存在此问题。但我有要求把它作为号码发送。我也能在AngularJS中看到同样的结果 HTML 控制台输出 this.uppTransactionIdFC.value 始终在结果末尾附加0 我想得到长度>=20的数字。 e、 g.在JavaScript中,12345678931234567833是2^53-1或9007199254740

我在angular应用程序中有一个POST请求,其中事务ID将作为数字(而不是字符串)发送。但当数字长度大于17时,第17位后的数字将更改为0

当类型为文本时,不存在此问题。但我有要求把它作为号码发送。我也能在AngularJS中看到同样的结果

HTML

控制台输出

this.uppTransactionIdFC.value
始终在结果末尾附加0

我想得到长度>=20的数字。 e、 g.在JavaScript中,12345678931234567833是
2^53-1
9007199254740991
,即一个16位数字(以10为底)

使用通常的
Number
类型无法可靠地表示大于JavaScript中的整数

您可以使用来表示任意大的数字,但Safari和(duh)Internet Explorer中缺少浏览器支持

您还可以选择将事务ID表示为字符串。我估计你不会对它们做太多与数字相关的操作(比如加法、减法)

在JavaScript中,它是
2^53-1
9007199254740991
,即一个16位数字(以10为底)

使用通常的
Number
类型无法可靠地表示大于JavaScript中的整数

您可以使用来表示任意大的数字,但Safari和(duh)Internet Explorer中缺少浏览器支持


您还可以选择将事务ID表示为字符串。我估计你不会对它们做太多与数字相关的操作(比如加法、减法)

粘贴实际控制台输出和原始请求(或响应)正文怎么样?我认为你不能将它们作为数字发送。如果我没有错的话,数字是用64位表示的,但只有52位用于值。如果你把数字转换成二进制,它需要61位。我期望的输出是123456781234567833,但我得到1234567891234568000@Bogdan有什么解决方案吗,比如在Java中,我们有多种数据类型来处理大型数据numbers@Ismail. 是的,这就是我上面所说的问题所在。123456789234568000=1000110001011010101001111100100110111010111100001000,长度为52位。它会将您的数字转换为最接近的最大值。还有,为什么不能使用字符串呢?粘贴实际控制台输出和原始请求(或响应)正文怎么样?我认为不能将它们作为数字发送。如果我没有错的话,数字是用64位表示的,但只有52位用于值。如果你把数字转换成二进制,它需要61位。我期望的输出是123456781234567833,但我得到1234567891234568000@Bogdan有什么解决方案吗,比如在Java中,我们有多种数据类型来处理大型数据numbers@Ismail. 是的,这就是我上面所说的问题所在。123456789234568000=1000110001011010101001111100100110111010111100001000,长度为52位。它会将您的数字转换为最接近的最大值。还有,为什么不能用字符串呢?
 uppTransactionIdFC: FormControl;
this.uppTransactionIdFC = new FormControl();
this.form= new FormGroup({      
      uppTransactionId: this.uppTransactionIdFC     
    });
this.uppTransactionIdFC.value