|
|
1
1
decimal数据类型基本上只保存一个数字——没有隐式应用于它的格式。数字的值不会因为以不同的格式显示而改变。 很可能,您可能遇到的问题是,当您从网页接收到字符串形式的输入时,您对其进行了错误的解析。 |
|
|
2
1
感谢所有提供经验和建议的人。
问题在于web配置中的这一行:
设置culture=“auto”允许.NET根据浏览器提供的值设置区域设置(顺便说一句,根据MSDN,“enableClientBasedCulture”未实现,因此您可以忽略它)。因此,如果一位来自法国的访问者(在他们的浏览器中配置了“fr fr”语言)访问我们的网站,那么所有的数字格式都会很好地工作(正确的小数点分隔符和货币符号),但我稍后在尝试将该数字从欧洲格式转换为我所需的英国/美国格式时会遇到问题。
我实施的解决方案如下:
在这个设置中,我的所有十进制值(内部)始终被视为en GB小数,因此采用我需要的格式。换句话说,我的应用程序不需要灵活地更改应用于整个当前线程的设置;恰恰相反:我只关心不同格式的值。 |
|
|
3
1
也许这对你有帮助
用法,即。
-雷特 不知道有什么更好的方法来检测格式,但是看看这个
|
|
|
4
0
rAyt提供了一个良好的开端,但是如果您使用各种文化,那么自动检测十进制数字是哪个文化可能会变得非常困难。为了确保您总是知道,最好围绕包含区域性的decimal创建一个简单的包装器类型。您需要更新数据存储,以同时存储区域性代码(即en US),以便在重建数据时不会“忘记”数据保存为什么区域性。您拥有的任何实体都将使用decimal包装类型,而不是直接使用decimal,并且该类型可以有一个重写的ToString方法,以正确的格式自动呈现:
|