C#将十进制格式转换为字符串

C#将十进制格式转换为字符串,c#,C#,我需要格式化十进制变量Latitude=9113267;经度=59300357; 转换为字符串格式9113267和59300357 Thx 约翰 编辑:尽管这是有效的,正如Chris所说,这不是最佳实践。您应该使用他的解决方案。VascoP在如何将数字转换为“正确的”十进制方面是正确的,但在如何将这些十进制值转换为字符串方面是错误的。ToString方法有一个重载,其签名为 public string ToString(IFormatProvider provider) 见: 您可以使用它创建

我需要格式化十进制变量Latitude=9113267;经度=59300357; 转换为字符串格式9113267和59300357

Thx 约翰


编辑:尽管这是有效的,正如Chris所说,这不是最佳实践。您应该使用他的解决方案。

VascoP在如何将数字转换为“正确的”十进制方面是正确的,但在如何将这些十进制值转换为字符串方面是错误的。ToString方法有一个重载,其签名为

public string ToString(IFormatProvider provider)
见:

您可以使用它创建特定于区域性的字符串。链接页面上的示例说明了如何执行此操作,但为了完整回答,示例可能是:

(Latitude/1000000).ToString(CultureInfo.CreateSpecificCulture("en-GB") // Outputs with a "." decimal separator
(Latitude/1000000).ToString(CultureInfo.CreateSpecificCulture("de-DE") // Outputs with a "," decimal separator
我假设你有一个特定的文化,你希望能够理解这一点,所以你应该使用正确的文化。如果您愿意(例如,您可以从全局配置设置中选择区域性),或者用户对数字格式有偏好,那么以后可以更轻松地进行更改

此外,如果您开始使用自定义格式(例如放入1000个分隔符),那么cultureinfo对象将再次执行正确的操作


最后还应该注意,如果默认区域性实际上是您正在使用的,那么您可能只需要.ToString。但是你没有提供这些信息,所以我只是假设一个简单的ToString不会起作用。

以“thx”结尾并不能让它更礼貌。说清楚点,逗号应该是什么?一个“小数”点(按美国标准)或一个位分隔符(我很困惑,因为它不是每三个分组,而且原始数字没有那种格式)。-1,对不起,如果我运行,我会得到小数点(.)而不是逗号(,)@Kieren:如果OP使用的是挪威文化,他会得到逗号。瓦斯科很可能使用葡萄牙文化,这也会产生逗号。英国文化将产生小数点。Vasco应该补充一点,小数分隔符取决于区域性。-1在.NET中,使用区域性来获取正确的小数分隔符有很多很好的方法,但是用Replace这样做肯定是一种不好的做法。@VascoP:Cool。很高兴你学到了一些新东西。更新您的答案,以参考,这不是最佳做法等,我会脱掉我的-1。我不喜欢投票否决对网站相对陌生的人,因为我知道让你的代表站起来是多么令人兴奋。我真的不想让任何人认为这是最好的方法
(Latitude/1000000).ToString(CultureInfo.CreateSpecificCulture("en-GB") // Outputs with a "." decimal separator
(Latitude/1000000).ToString(CultureInfo.CreateSpecificCulture("de-DE") // Outputs with a "," decimal separator