我正在尝试将float从一种文化转换为另一种文化,但似乎在网上找不到任何适合我的东西。问题是:
- 我有一个参数来自特定文化中的外部资源(web服务)
- 结果被发送到MVC应用程序,并根据当前区域性设置进行验证
这意味着在将数据发送到服务器进行处理之前,我必须以某种方式从静态区域性("en-US")转换为客户端上选择的任何内容,因此来自客户端的所有数据都在一个区域性上。
我相信全球化jQuery插件(GitHub)将提供这种功能,在给定的文化中开箱即用地格式化数字(和日期),但似乎没有。
我尝试过的:使用全球化插件,设置Globalize.culture
属性,并希望Globalize.format(Globalize.parseFloat("1.2435677777", 10, "en-US")))
使用所需的十进制分隔符格式化值。然而,它似乎对我不起作用。
如果有人能指出我做错了什么,并给出一个更好的工作榜样,那就太好了。
因为Globalize.format()函数总是返回一个"."十进制分隔符,据我所知,有一个小技巧的解决方案,但至少它有效。重点是将"中性"小数分隔符替换为当前区域性的分隔符
Globalize.parseFloat("1.2435677777", 10, "en-US").toString().replace(".", Globalize.cultures[Globalize.cultureSelector].numberFormat["."])
如果我为format函数指定了一种格式,则对我有效。
Globalize.culture("sv");
Globalize.format(Globalize.parseFloat("1.2435677777", 10, "en-US"), "N");
给出:"1,24"