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

11

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

输入:

a = 40000.00-

输出结果将为

40,000.00-

我尝试使用这段代码:

Dim a as string

a = "4000.00-"

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

1
http://blog.stevex.net/string-formatting-in-csharp/ - Mitch Wheat
7个回答

16

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

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。


我尝试了这个,但我想要的结果应该是负数在最后面。 Dim a as string a = "4000.00-" a = Decimal.Parse(a).ToString("##,###.00") console.writeline (a) ' 结果为 4,000.00 - user709787
还没有成功。我会用另一种方式尝试。一旦我搞定了,我会在这里发布。谢谢你的回复。 - user709787
我的最后一招肯定会行,虽然不完全优雅。 - Slappy
当我转换为VB时,出现了一个错误。Dim s As String = If((a < 0), Math.Abs(a).ToString("##,###0.00") & "-", a.ToString("##,###0.00")) - user709787
这是我用来转换你的代码的网站:http://www.developerfusion.com/tools/convert/csharp-to-vb/ - user709787
显示剩余3条评论

7

针对VB.NET:

CDec(Val(string_value))

例如,
CDec(Val(a))

结果将会是40000D,如果a的值为"400.02",那么结果将会是400.02D

6
使用 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
以下内容对我来说很好用,但我不知道它是否正确。
double a = 40000.00;
a = double.Parse(a.ToString("##,###.00"));
MessageBox.Show(a.ToString("##,###.00"));

你正在将 double 转换为字符串,然后再将其解析回 double。如果你试图截断额外的小数位(即:从 40000.0001 截断为 40000.00),那么这会起作用,但是使用 Math.Round(a, 2) 会更高效。 - dwilliss

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接