簡體   English   中英

在任何區域性中均不含小數,小數點或逗號的十進制字符串

[英]Decimal string without decimals, dots or commas in any culture

如果我在C#中有一個簡單的小數,並且想在任何區域性中使用ToString使其不帶任何點,逗號或小數-我該怎么做?

我嘗試了使用invariantcultureToString("N0")來刪除小數,但添加了“。” 用我的語言

做這個的最好方式是什么?

您尚未在評論中澄清,但我懷疑您想要這樣的東西嗎?

3.14 -> 3

5.34543543 -> 5

如果這是正確的,那么你只需要你投decimalint這將剝奪精度關閉, 給你整個號碼。

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);

這是一個更好的答案,如果漢斯張貼一個答案,我建議他們標記作為解決方案。

除了maccettura的答案,該答案僅適用於(2 ^ 31)-1和-(2 ^ 31)-1之間的數字。 您可以使用:

decimal.Truncate(decimalToTruncate)

應該適用於十進制可以存儲的所有值。

Maccettura的簡單小提琴

在MSDN上進行十進制截斷

簡單的方法是只使用Convert.ToInt32(“ Your Value”)而不是.ToString()。

所以

字符串result = Convert.ToInt32(“ 3.14”)。ToString();

結果為“ 3”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM