C#格式十进制到字符串

时间:2011-06-21 15:34:31

标签: c#

我需要格式化十进制变量Latitude = 9113267;经度= 59300357; 字符串格式9,113267和59,300357

THX 约翰

2 个答案:

答案 0 :(得分:3)

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

的重载
public string ToString(IFormatProvider provider)

请参阅:http://msdn.microsoft.com/en-us/library/3ebe5aks.aspx

您可以使用它来创建特定于文化的字符串。链接页面上的示例显示了如何执行此操作,但为了完整答案,示例可能是:

(Latitude/1000000).ToString(CultureInfo.CreateSpecificCulture("en-GB") // Outputs with a "." decimal separator
(Latitude/1000000).ToString(CultureInfo.CreateSpecificCulture("de-DE") // Outputs with a "," decimal separator

我认为你有一种特定的文化,你希望能够理解这一点,所以你应该使用正确的文化。如果您愿意,可以更容易地在以后更改(例如,您可以从全局配置设置中获取文化)或者具有数字格式的用户首选项等。

此外,如果您开始使用自定义格式(例如,将千位分隔符放入其中),那么cultureinfo对象将再次做正确的事情。

在所有这些结尾处还应该注意,如果默认文化实际上是您正在使用的文化,则可能只需要.ToString。你没有提供这些信息,所以我只是假设一个简单的ToString不会做这个伎俩。

答案 1 :(得分:1)

(Latitude/1000000).ToString().Replace('.', ',');

(Longitude/1000000).ToString().Replace('.', ',');
编辑:虽然这有效,但正如克里斯所说,这不是最佳做法。你应该使用他的解决方案。