任何文化中没有小数,点或逗号的十进制字符串

时间:2018-03-30 14:08:39

标签: c# c#-4.0 invariantculture

如果我在C#中有一个简单的小数,我希望ToString在任何文化中没有任何点,逗号或小数 - 我该怎么做?

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

最好的方法是什么?

3 个答案:

答案 0 :(得分:3)

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

3.14 -> 3

5.34543543 -> 5

如果这是正确的,那么您只需将decimal投射到int即可剥离精度,并为您提供 整数。

string someString = ((int)someDecimal).ToString();

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

public static class DecimalExtensions
{
    public static string ToIntString(this decimal input)
    {
        return ((int)input).ToString();
    }
}

简单地称之为:

string someString = someDecimal.ToIntString();

简单小提琴here

修改

@HansPassant实际上在评论中提供了最简单的解决方案,我觉得不记得是愚蠢的:

string someString = someDecimal.ToString("F0", System.Globalization.CultureInfo.InvariantCulture);

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

答案 1 :(得分:1)

除了maccettura的答案,它只适用于(2 ^ 31)-1和 - (2 ^ 31)-1之间的数字。您可以使用:

decimal.Truncate(decimalToTruncate)

应该适用于小数可以存储的所有值。

Simple fiddle by maccettura

Decimal.Truncate on MSDN

答案 2 :(得分:0)

简单的方法是使用Convert.ToInt32(“Your Value”)而不是.ToString()。

所以

string result = Convert.ToInt32(“3.14”)。ToString();

结果会给你“3”。