繁体   English   中英

C#默认将double / floats的字符串格式定义为美式英语

[英]C# define string format of double/floats to be US english by default

我已经维护了数千行Web应用程序源代码,这些代码最初是在美国开发系统上编写的。 它大量使用了SQL语句字符串,这些字符串是动态组合的,例如

string SQL = "select * from table where double_value = " + Math.Round(double_value, 2);

不要评论糟糕的编程风格,在这种情况下这对我没有帮助:)

症结所在:我的系统使用德语语言环境,从而导致错误的SQL语句,如下所示:

"select * from table where double_value = 15,5"

(请注意,逗号作为小数点分隔符而不是点)。

问题:在这种情况下,将Web应用程序的语言环境更改为美国或英国的最“优雅”方法是什么,以防止被迫更改和检查每一行代码? .NET 3.5不是一个选择(会让我有机会在扩展类中覆盖ToString() 。)

您不需要使用扩展方法,只需将ToString与IFormatProvider结合使用:

string SQL = "select * from table where double_value = " 
      + Math.Round(double_value, 2).ToString(CultureInfo.InvariantCulture);

您需要将字符串格式化程序与默认的en-US文化(或其他使用。而不是。作为小数位的文化)一起使用。

请参阅: http//msdn.microsoft.com/en-us/library/1ksz8yb7.aspx

形成问题后,我立即找到了答案。

在这里(将其添加到web.config中):

<configuration>
 <system.web>
  <globalization culture="en-US"/>
 </system.web>
</configuration>

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM