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

在VB.NET中将字符串转换为十进制,vb.net,string,format,decimal,Vb.net,String,Format,Decimal,将字符串转换为十进制的最简单方法是什么 输入: a = 40000.00- 输出将是 40,000.00- 我尝试使用以下代码: Dim a as string a = "4000.00-" a = Format$(a, "#,###.##") console.writeline (a) 使用Decimal.Parse转换为十进制数,然后使用.ToString(“此处的格式”)转换回字符串 Dim aAsDecimal as Decimal = Decimal.Parse(a).ToS

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

输入:

a = 40000.00-
输出将是

40,000.00-
我尝试使用以下代码:

Dim a as string

a = "4000.00-"

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

使用
Decimal.Parse
转换为十进制数,然后使用
.ToString(“此处的格式”)
转换回字符串

Dim aAsDecimal as Decimal = Decimal.Parse(a).ToString("format here")
最后手段(不推荐):


strings=(aAsDecimal以下内容对我来说很好,但我不知道它是否正确

double a = 40000.00;
a = double.Parse(a.ToString("##,###.00"));
MessageBox.Show(a.ToString("##,###.00"));
使用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

此代码有效,但相当长:

 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
对于VB.NET:

CDec(Val(string_value))
比如说,

CDec(Val(a))

结果将是
40000D
,或者如果a=“400.02”的值是
400.02D
,那么它将是
400.02D

我尝试了这个方法,但是我想要的结果是负的,应该在末尾。将a作为字符串a=“4000.00-”a=Decimal.Parse(a).ToString(“###,######.00”)console.writeline(a)'result 4000.00还有一种未被推荐的方法:(a不走运。我会用另一种方法来尝试。一旦我得到它,我会把它贴在这里。谢谢你的回复。我最后的方法会奏效。虽然不完全优雅。当我转换到VB时,我得到一个错误Dim s作为String=If((a<0),Math.Abs(a)。ToString(“##,######0.00”)&“-”,a.ToString(“###,#####0.00”))中间行是不必要的。您将双精度转换为字符串,然后再将其解析回双精度。现在,如果您尝试截断额外的小数位数(即:40000.0001到40000.00),这将起作用,但数学四舍五入(a,2)将更有效。
Dim D@ = CDec(TextBox1.Text) '//convert string to decimal with short
CDec(Val(a))
Dim D@ = CDec(TextBox1.Text) '//convert string to decimal with short