任何区域性中不带小数、点或逗号的十进制字符串

Lar*_*ard 3 c# c#-4.0 invariantculture

如果我在 C# 中有一个简单的小数,并且我想要ToString在任何文化中不包含任何点、逗号或小数 - 我该怎么做?

我尝试使用ToString("N0")withinvariantculture删除小数,但它添加了“.” 用我的语言。

做这个的最好方式是什么?

mac*_*ura 5

你还没有在评论中澄清,但我怀疑你想要这样的东西?

3.14 -> 3

5.34543543 -> 5

如果这是正确的,那么您只需将您的值转换decimal为 an int,这会去掉精度并给您整数。

string someString = ((int)someDecimal).ToString();
Run Code Online (Sandbox Code Playgroud)

如果您发现自己经常重复这个逻辑,您可以创建一个简单的扩展方法来保持干燥:

public static class DecimalExtensions
{
    public static string ToIntString(this decimal input)
    {
        return ((int)input).ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

并简单地这样称呼它:

string someString = someDecimal.ToIntString();
Run Code Online (Sandbox Code Playgroud)

这里简单的小提琴

编辑

@HansPassant 实际上在评论中给出了最简单的解决方案,我因为不记得而感到愚蠢:

string someString = someDecimal.ToString("F0", System.Globalization.CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

这是一个更好的答案,如果汉斯发布了答案,我建议将他们的答案标记为解决方案。