簡體   English   中英

C# 將 int 轉換為帶小數位的貨幣字符串

[英]C# Convert int to currency string with decimal places

轉換。 廢話……對我來說可能是語言中最令人困惑的方面。

無論如何,我想將 int 999 轉換為 9.99 美元。 使用 ToString("C") 給我 999.00 美元,這不是我想要的。

我所有的整數都將以這種方式工作,這意味着如果某物的價格為 12.30,則 int 值將為 1230。始終保留兩位小數。 我知道這對大多數人來說很容易,我在這里或通過谷歌找不到任何東西。

此外,您在轉換方面擁有的任何資源將不勝感激!

如果您的源變量聲明為 int,那么一種可能的解決方案是除以“100m”而不是“100”。 否則它將執行 integer 除法。 例如:

    int originalValue = 80;
    string yourValue = (originalValue / 100m).ToString("C2");

這會將 yourValue 設置為“$0.80”。 如果省略“m”,它將設置為“$0.00”。

注意:“m”告訴編譯器將 100 視為小數,並且將在 originalValue 作為除法的一部分進行隱式轉換。

只需除以 100:

 yourValue = (originalValue / 100).ToString("C");<br> // C will ensure two decimal places... <br> // you can also specificy en-US or whatever for you currency format

有關貨幣格式的詳細信息,請參見此處

更新:

我今天一定很慢...您還必須轉換為雙精度,否則您將丟失小數位:

yourValue = ((double)originalValue / 100).ToString("C");

(或者,您可以使用小數,因為它通常是貨幣的首選類型)。

我得到了一個 function 對於任何只需要根據特定分隔符除零的人。 例如:1250000 -> 1,250,000..

public static string IntToCurrencyString(int number, string separator)
{
    string moneyReversed = "";

    string strNumber = number.ToString();

    int processedCount = 0;

    for (int i = (strNumber.Length - 1); i >= 0; i--)
    {
        moneyReversed += strNumber[i];

        processedCount += 1;

        if ((processedCount % 3) == 0 && processedCount < strNumber.Length)
        {
            moneyReversed += separator;
        }
    }

    string money = "";

    for (int i = (moneyReversed.Length - 1); i >= 0; i--)
    {
        money += moneyReversed[i];
    }

    return money;
}

享受!

暫無
暫無

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

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