web api c#为带有角度的long数据类型返回另一个值

Posted

技术标签:

【中文标题】web api c#为带有角度的long数据类型返回另一个值【英文标题】:web api c# returns another value for data type long with angular 【发布时间】:2021-12-25 02:16:51 【问题描述】:

我正在从 Angular 客户端向 web api .net Framework 4.7 发起 http get 调用

我有一个服务向我返回一个带有值的对象,包括一个“long”类型的属性,问题是当我在 api 中调试响应时,它返回一个数字 9997773333333335(这是我所期望的)但是当我进入浏览器时将其翻译为 9997773333333336

总结:

long 数据类型,在数据库中保持为 9997773333333335 但在前面收到响应时,它以 9997773333333336 的形式到达。

有人可以向我解释为什么会这样吗?你在做四舍五入吗?我该如何避免呢?

事实:DB 中的字段是 Bigint。

后端响应:

前端结果:

【问题讨论】:

这个数字超过了Number.MAX_SAFE_INTEGER。更多here 【参考方案1】:

问题是您使用的数字大于Number.MAX_SAFE_INTEGERjavascript 无法使用 Number 类型准确地表示这么大的整数,因此您所看到的错误是意料之中的。

尝试将这些值作为strings 而不是longs 传递给前端。如果您需要在客户端对其进行任何计算,请先将这些字符串转换为BigInts。

【讨论】:

以上是关于web api c#为带有角度的long数据类型返回另一个值的主要内容,如果未能解决你的问题,请参考以下文章

在C#中long与int64有啥区别吗

使用带有备用内容类型的 c# web api

C#如何把INT类型转换为方法参数对应的枚举类型?怎么强制转换?

在C#中long与int64有啥区别吗

如何通过c#读取oracle数据库中的long类型字段

C#|Xml 简单序列化和返序列化