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数据类型返回另一个值的主要内容,如果未能解决你的问题,请参考以下文章

当 Api 返回响应时,如何以角度显示“登录失败。请重试”消息?

C# 中的 C++ int & long 编组

请教c#中double类型转化为long类型的方法, 以及对double四舍五入的方法

使用带有c#的角度js来使用web api

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

无法将web api服务数据绑定到角度为2的ng2-smart-table