【问题标题】:C# Convert int to currency string with decimal placesC#将int转换为带小数位的货币字符串
【发布时间】:2011-07-19 03:05:43
【问题描述】:

转化。废话……对我来说可能是语言中最令人困惑的方面。

无论如何,我想将 int 999 转换为 $9.99。使用 ToString("C") 给了我 999.00 美元,这不是我想要的。

我所有的整数都将以这种方式工作,这意味着如果某物的价格为 12.30,则 int 值将为 1230。始终保留两位小数。我知道这对大多数人来说都很容易,我在这里或通过 Google 找不到任何东西。

此外,我们非常感谢您提供的有关转化的任何资源!

【问题讨论】:

  • 试试 (YOURINTVALUE / 100).ToString("C2");
  • 有什么方法可以切换到使用 Decimal 类型?
  • @fardjad:不完全;您将在那里执行整数除法,您需要使用someInt / 100.0。
  • @Ed S. 哦,是的,你是对的。至少有一个操作数应该是(转换为)浮点数。

标签: c# decimal int currency


【解决方案1】:

如果您的源变量声明为 int,那么一种可能的解决方案是除以“100m”而不是“100”。否则它将执行整数除法。 例如:

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

这会将 yourValue 设置为“$0.80”。如果省略“m”,它将设置为“$0.00”。

注意:“m”告诉编译器将 100 视为小数,并且将在 originalValue 作为除法的一部分进行隐式转换。

【讨论】:

    【解决方案2】:

    除以 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
    

    有关货币格式的详细信息,请参阅here。

    更新:

    我今天一定很慢...你还必须转换为双精度,否则你会丢失小数位:

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

    (或者,您可以使用decimal, since it is usually the preferred type for currency)。

    【讨论】:

      【解决方案3】:

      我为任何只需要根据特定分隔符划分零的人提供了一个功能。例如: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;
      }
      

      享受吧!

      【讨论】:

        猜你喜欢
        • 2021-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多