在VB.NET中将字符串转换为十进制

时间:2011-05-19 08:29:44

标签: vb.net string format decimal

将字符串转换为十进制的最简单方法是什么?

输入:

a = 40000.00-

输出

40,000.00-

我尝试使用此代码:

Dim a as string

a = "4000.00-"

a = Format$(a, "#,###.##")
console.writeline (a)

7 个答案:

答案 0 :(得分:14)

使用Decimal.Parse转换为十进制数,然后使用.ToString("format here")转换回字符串。

Dim aAsDecimal as Decimal = Decimal.Parse(a).ToString("format here")

最后的方法(不推荐):

string s = (aAsDecimal <0) ? Math.Abs(aAsDecimal).ToString("##,###0.00") + "-" : aAsDecimal .ToString("##,###0.00");

您必须翻译成Visual Basic。

答案 1 :(得分:5)

使用Decimal.TryParse

Dim a as string
Dim b as Decimal
If Decimal.TryParse(a, b) Then
   a = b.ToString("##,###.00")
Else
   a = "can not parse"
End If

答案 2 :(得分:3)

对于VB.NET:

CDec(Val(string_value))

例如,

CDec(Val(a))

结果将为40000D,或者如果a =“400.02”的值则为400.02D

答案 3 :(得分:2)

以下对我来说很好,但我不知道它是否正确。

double a = 40000.00;
a = double.Parse(a.ToString("##,###.00"));
MessageBox.Show(a.ToString("##,###.00"));

答案 4 :(得分:2)

Sub Main()
    Dim convert As Func(Of String, Decimal) = _
    Function(x As String) Decimal.Parse(x) ' This is a lambda expression.
    Dim a = convert("-16325.62")
    Dim spec As String = "N"
    Console.WriteLine("{1}", spec, a.ToString(spec))
    'Console.ReadLine() ' Uncomment to see value in Console output.
End Sub

答案 5 :(得分:1)

Dim D@ = CDec(TextBox1.Text) '//convert string to decimal with short

答案 6 :(得分:0)

这段代码有效,但很长:

 Dim a as string 
 Dim b as decimal

 a = "4000.00-" 
 b = a

 If b >= 0 then
     console.writeline (b.ToString("##,###.00"))
 Else
     b = Math.Abs(b)
     console.writeline (b.ToString("##,###.00") & "-")
 End if