nei*_*eil 0 c# floating-point double locale
我有几千行的Web应用程序源代码,最初是在美国开发系统上编写的,用于维护.它大量使用SQL语句字符串,这些字符串是动态组合的,例如
string SQL = "select * from table where double_value = " + Math.Round(double_value, 2);
Run Code Online (Sandbox Code Playgroud)
不要评论糟糕的编程风格,在这种情况下这对我没有帮助:)
症结:我的系统使用德语语言环境,这反过来会导致错误的SQL语句,如下所示:
"select * from table where double_value = 15,5"
Run Code Online (Sandbox Code Playgroud)
(注意逗号为小数分隔符而不是点).
问题:为了防止被迫更改和检查每一行代码,在这种情况下将Web应用程序的区域设置更改为美国或英国的"最优雅"方式是什么?.NET 3.5不是一个选项(会让我有机会ToString()在扩展类中覆盖.)
您不需要使用扩展方法,只需将ToString与IFormatProvider一起使用:
string SQL = "select * from table where double_value = "
+ Math.Round(double_value, 2).ToString(CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)