.NET double.ToString线程安全吗?
我在生产ASP.NET应用程序中看到一个问题,它涉及以下代码,该代码用于呈现特定对象的地理坐标:
private double _longitude;
private double _latitude;
public string ToCsvString()
{
return _latitude + "," + _longitude;
}
根据传入的请求,Thread.CurrentThread.CurrentCulture将被设置为不同的值。 我看到的行为是这个函数的结果会不同于线程本地文化。 有时小数点和逗号是不正确的当前文化。 更奇怪的是,一旦出现错误,错误的价值依然存在。
对双缓存值的ToString?
它不应该缓存这些值,特别是因为你提到的文化问题。 想到两件事:
为什么不使用显式的ToString
方法来让你手动指定一个区域性的IFormatProvider?
为了呈现地理坐标,我建议您最好定义自己的固定格式或文化,而不要将其留给运行线程的框架,默认文化设置或文化信息。
我会这样做,将其格式化为4个小数点:
return _latitude.ToString("0.0000") + "," + _longitude.ToString("0.0000");
要么
string.Format("{0:0.0000}, "{1:0.0000}", _latitude, _longitude);
或者如果你想要小数分隔符是文化特定的,
CultureInfo ci = System.Globalization.CultureInfo.GetCultureInfo("en-AU");
return _latitude.ToString("N4", ci) + "," + _longitude.ToString("N4", ci);
链接地址: http://www.djcxy.com/p/75091.html