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

本文关键字:字符串 转换 格式 十进制 | 更新日期: 2023-09-27 18:00:09

我需要格式化Decimal变量Latitude=9113267;经度=59300357;字符串格式9113267和59300357

Thxjohn

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

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不会起作用。

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

编辑:虽然这是有效的,正如克里斯所说,这不是最好的做法。你应该使用他的解决方案。