【问题标题】:Money Format Number VB.NET货币格式数字 VB.NET
【发布时间】:2012-02-13 17:54:11
【问题描述】:

我正在尝试转换货币格式示例的数学结果:

Dim num1 As Integer = 2000
Dim num2 As Integer = 500

msgbox(cDbl(num1 + num2))

它只返回 2500,我需要返回我的 2,500.00 如果有人知道我将如何提供帮助,谢谢。

【问题讨论】:

    标签: vb.net double money-format


    【解决方案1】:

    首先,在处理货币值时,您应该使用Decimal 而不是DoubleDouble 有一些舍入问题。

    其次,可以使用string formatting

    Dim num1 As Integer = 2000
    Dim num2 As Integer = 500
    Diml value As Decimal = CDec(num1 + num2)
    Dim formattedValue As String = String.Format("{0:n}", value)
    
    msgbox(formattedValue)
    

    【讨论】:

      【解决方案2】:

      您的 MsgBox 向您显示了值,但它没有格式化它,因为您没有要求它。

      如果你再进一步将结果格式化为字符串,你会得到你想要的格式,例如:

      Dim num1 As Double = 2000
      Dim num2 As Double = 500
      Dim sum As Double = num1 + num2
      
      MsgBox(sum.ToString("0.00")) ' Adjust format string to suit
      

      【讨论】:

      • 你的答案是正确的,但是有什么方法可以添加逗号? (2,500.00) 谢谢 :)
      • 这就是为什么我说“调整格式字符串以适应”MSDN Documentation 非常完整,甚至专门允许currencies to be specified
      【解决方案3】:

      Standard Numeric Format String

      是通用数字格式的绝佳资源,最重要的是货币(考虑到文化差异)

      “C”或“c”表示货币

      • 支持:所有数字类型。
      • 精度说明符:小数位数。
      • 默认精度说明符:由 System.Globalization.NumberFormatInfo 定义。

      更多信息:货币(“C”)格式说明符。

      • 123.456(“C”,en-US)-> 123.46 美元
      • 123.456 ("C", fr-FR) -> 123,46 €
      • 123.456 ("C", ja-JP) -> ¥123
      • -123.456(“C3”,en-US)->(123.456 美元)
      • -123.456 ("C3", fr-FR) -> -123,456 €
      • -123.456 ("C3", ja-JP) -> -¥123.456

      【讨论】:

        【解决方案4】:

        如果您希望格式为货币,则以下任何一种都可以:

            Dim num1 As Integer = 2000
            Dim num2 As Integer = 500
            MsgBox(String.Format("{0:C2}", num1 + num2))
        

        或者

            Dim num1 As Integer = 2000
            Dim num2 As Integer = 500
            Dim sum As Integer = num1 + num2
        
            MsgBox(sum.ToString("C2"))
        

        【讨论】:

          【解决方案5】:

          格式货币翻倍

          value = 1500,20 TL
          
          ctype(value, double)
          
          return 1500,20
          

          双倍格式化货币

          样本

          value = 1500,1995
          
          formatcurrency(value,2)
          
          return = 1500,20 TL moneysembol (TL , $ ,vs..)
          

          【讨论】:

          • 如果您在答案中粘贴代码,请使用 {} 标记使其语法突出显示。它会让你的答案更容易阅读。
          【解决方案6】:
          Dim num1 As Decimal = 20
          Dim num2 As Decimal = 34
          Dim ans As Decimal
          
          ans = num1 + num2
          MsgBox(ans.ToString("c"))
          

          【讨论】:

            【解决方案7】:

            查看 String.Format 文档,您会在其中找到所需的内容。

            【讨论】:

              【解决方案8】:

              您通常不使用Integer 作为货币值的数据类型。请改用Double

              我确信有很多方法可以将输出字符串格式化为货币值。

              如果我知道的方法已经被 Rowland Shaw 解释过。所以我会跳到另一个。它是名为FormatCurrency 的内置函数。它会将字符串输出为货币值,并带有您系统中定义的货币符号。

              Dim num1 As Double = 2000
              Dim num2 As Double = 500
              Dim ans As Double = num1 + num2
              
              MessageBox.Show(FormatCurrency(ans))
              

              更多关于FormatCurrency的详情,请看here

              【讨论】:

              • downvote - double 不是货币值的好数据类型。可能存在舍入问题。应该使用 Decimal 类型。
              猜你喜欢
              • 1970-01-01
              • 2017-03-23
              • 1970-01-01
              • 2011-01-23
              • 2020-09-16
              • 2022-11-14
              • 2015-10-24
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多