【问题标题】:How do you deal with decimal (,) and javascript?你如何处理小数(,)和javascript?
【发布时间】:2018-07-05 14:02:00
【问题描述】:

我有一个ASP.NET MVC 应用程序C#,还有一些数字输入到我的Model decimal 类型中,它们将小数部分视为逗号(即12,5)。

我将它们序列化并使用JSON 发送给客户端,它正确地将逗号转换为点:

var result = Json(new { Value = myModel.myValue }); // become Value = 12.5

比我处理数据客户端,使用一些数学函数,总是用点(即 12.5 * 3 = 37.5)获取数值。

但是,当我需要将处理后的值发回服务器时,如果我保留该点并将该值存储到我的Model(如前所述,即decimal)中,它会截断后面的值点。

在客户端发回数据之前,我真的需要做result.replace('.', ',') 吗?该死的不太好。最佳做法?

矛盾的是,对于 mvc 的 jquery 验证器(需要 decimal),我需要用逗号将值打印到输入框中。往返太疯狂了……

【问题讨论】:

  • “将小数部分视为逗号”听起来像是一个本地化问题。
  • 这不是本地化问题 :) 在欧洲,它是分隔小数部分的逗号。没错,我要这样!
  • “这不是本地化问题” “在欧洲” 我在英国。祝你好运!
  • @Davesoft:en.wikipedia.org/wiki/Decimal_separator#/media/…我在意大利,看起来是对的,不是吗?
  • "在客户端发回数据之前,我真的需要执行 result.replace('.', ',') 吗?"听起来像是本地化问题...

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


【解决方案1】:

您可以使用stringify - 这会将 JavaScript 对象转换为字符串,

var myJSON = JSON.stringify(Yourvalue);

【讨论】:

  • 这并不能解决客户端的问题。一旦我需要用 JS 进行数学运算,我仍然需要.,所以无论如何似乎都需要双重转换:O
【解决方案2】:

这可能会有所帮助,而不是让服务器负担客户端疯狂选择的编码,而是让 javascript 来做。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

当它通过“it-IT”时,它很好地将 98.76 变成了 98,76

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2010-09-12
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多