我有一个带有数字属性(double)的对象,并且没有特定的文化集。 当用户登录网站时,此属性派生自数据库。 数据库中的区域性格式为en-GB。
当调用该属性并返回到网站上的标签时,该号码将以其本地文化格式显示。
我的问题是,对象属性是否保留en-GB文化格式,浏览器只显示本地文化格式,或者对象实际上是否将该属性存储在用户本地文化格式?
我在处理不同文化(多语言网站)的数字格式时遇到了很多麻烦,我想知道我应该如何处理这些属性,因为我必须根据这些数字和其他数字输入进行计算。网站上的用户以本地格式向用户显示,但始终以本地格式(en-GB)将数据提交回我们的数据库。
答案 0 :(得分:2)
该物业不存储文化。格式化基于Thread.CurrentUICulture
,这是服务器端的文化。
假设您正在开发ASP.NET网站:
CultureInfo culture = new CultureInfo(Request.UserLanguages[0]);
return double.Parse("1.5", culture.NumberFormat);
这会使用客户端提供的文化设置转换double。
答案 1 :(得分:1)
数字值本身只是一个数字。数字的格式取决于您如何向用户显示该数字的文本表示。
从用户输入中解析数值将再次取决于您允许用户输入值的方式。只要你知道输入字符串的文化,你就可以将它解析回一个与文化无关的实际数字。