【问题标题】:JSON Response Long is Rounded or Corrupted [duplicate]JSON响应长被舍入或损坏[重复]
【发布时间】:2015-10-15 20:32:52
【问题描述】:

我正在将 JSON 从服务器发送到客户端。 JSON 包含一个long

看来这个数字正在被四舍五入之类的,因为:

  • 发送的服务器端号为:1036647050030089506
  • 收到的客户端号码是:1036647050030089500

为什么会发生这种情况,我该如何解决?

服务器端代码:

Post["team", true] = async (parameters, ct) =>
{
    var team = this.Bind<Team>();
    team.Id = 1036647050030089506;

    Console.WriteLine("Response: " + team.Id);
    return Response.AsJson(team);
};

客户端代码:

$.ajax({
    url: '/api/team',
    type: 'POST',
    dataType: "json",
    success: function (response) {
        alert("Response: " + response.id);
    }
});

【问题讨论】:

  • 哇,不……不要那样做。响应肯定是 json。这里的问题是,尽管 JSON 可以处理无限大的数字,但 JavaScript 不能,因此当它尝试将非常大的值转换为浮点数时,您会遇到精度损失问题。请参阅@JohnnyFun 的答案以获取更多详细信息。

标签: javascript c# ajax json asp.net-mvc


【解决方案1】:

看起来您希望将其作为字符串发送。有关how js handles big ol' numbas 的更多详细信息,请参阅此问题。剧透警告:糟糕...但我仍然爱你 javascript...仍然爱你。

【讨论】:

  • +1,这是正确的。为了帮助说明,请尝试以下操作:var num = 1036647050030089506; console.log(num);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
相关资源
最近更新 更多