1

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

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

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

4

3 回答 3

3

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

3.14 -> 3

5.34543543 -> 5

如果这是正确的,那么您只需将您的decimal转换为一个int可以去除精度并只给您整数的值。

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

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

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

并简单地这样称呼它:

string someString = someDecimal.ToIntString();

简单的小提琴在这里

编辑

@HansPassant 实际上在评论中给出了最简单的解决方案,我不记得很傻:

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

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

于 2018-03-30T14:14:54.460 回答
1

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

decimal.Truncate(decimalToTruncate)

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

maccettura 的简单小提琴

MSDN 上的 Decimal.Truncate

于 2018-03-30T14:20:35.807 回答
0

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

所以

字符串结果= Convert.ToInt32("3.14").ToString();

结果它会给你“3”。

于 2018-03-30T14:25:08.377 回答