将字符串转换为十进制之谜
我面临着使用 C# .NET 从字符串转换为十进制的问题。问题是我编写了以下代码,并且在我的开发 Windows 7 .NET Framework 3.5 系统上运行良好。但是,如果我将应用程序移至 Windows 2003 Server .NET 3.5 Framework 上,结果会有所不同。谁能理解那里发生了什么吗?
代码:
dec = Convert.ToDecimal(strDec);
Windows 7 结果:85.00 Windows 2003 结果:8500
I'm facing a problem about the conversion from string to decimal using C# .NET. The problem is that I have wrote the following code and works fine on my development Windows 7 .NET Framework 3.5 system. But, if I move the application on the Windows 2003 Server .NET 3.5 Framework the result is different. Can anyone understand what happen there?
Code:
dec = Convert.ToDecimal(strDec);
Windows 7 result: 85.00
Windows 2003 result: 8500
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您服务器上的区域和文化设置可能使用
,
设置为十进制,将.
设置为数字分组。请参阅控制面板/区域和文化设置。如果此数字字符串是由您的应用程序生成的,我将在这两个地方使用
CultureInfo.InvariantCulture
。It may be that the region and culture settings on your server are set with
,
as decimal, and.
as digit grouping. See Control Panel/region and culture settings.If this numeric string is generated by your application, I would use
CultureInfo.InvariantCulture
in both places.您会受到区域设置的影响。当在使用句号作为小数分隔符的语言环境中解析字符串 85.00 时,结果为 85.00。如果使用逗号作为小数分隔符,则结果为 8500。
在指定
CultureInfo
的位置使用重载:您还可以使用
CultureInfo.InvariantCulture
,它是默认的 .NET>CultureInfo
和英文的CultureInfo
类似。在生产质量应用程序中,您应该始终指定或了解解析和格式化字符串时使用的
CultureInfo
。如果您在项目中打开代码分析,当您忘记这样做时,您会收到警告:CA1304:指定文化信息。You are affected by regional settings. When the string 85.00 is parsed in a locale where full stop is used as decimal separator the result is 85.00. If comma is used as decimal separator the result is 8500.
Use the overload where you specify a
CultureInfo
:You can also use
CultureInfo.InvariantCulture
which is the default .NETCultureInfo
and similar to the EnglishCultureInfo
.In a production quality application you should always specify or know the
CultureInfo
used when you parse and format strings. If you turn code analysis on in your project you will get warnings when you forget to do that: CA1304: Specify CultureInfo.尝试使用文化无知模式
Try using culture-ignorant mode
时遇到了这个问题
我们在0,5
,但
当时是 5!
解决方案是使用
We faced with the issue when
was 0,5
, but
was 5!
The solution was to use
所以,我使用了下一个函数
,但它仅适用于俄语,例如小数点分隔符
so, i used next function
But it only for Russian like decimal separator