[英]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.