Преобразовать строку в десятичную в VB.NET - PullRequest
10 голосов
/ 19 мая 2011

Какой будет самый простой способ преобразовать строку в десятичную?

Ввод:

a = 40000.00-

Вывод будет

40,000.00-

Я пытался использовать этокод:

Dim a as string

a = "4000.00-"

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

Ответы [ 7 ]

14 голосов
/ 19 мая 2011

Используйте 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.

5 голосов
/ 19 мая 2011

Использовать 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
3 голосов
/ 03 апреля 2014

Для VB.NET:

CDec(Val(string_value))

Например,

CDec(Val(a))

Результат будет 40000D или, если значение для = 400,02, то будет400.02D.

2 голосов
/ 08 декабря 2012
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
2 голосов
/ 19 мая 2011

Следующее работает хорошо для меня, но я не знаю, правильно ли это или нет.

double a = 40000.00;
a = double.Parse(a.ToString("##,###.00"));
MessageBox.Show(a.ToString("##,###.00"));
1 голос
/ 25 января 2019
Dim D@ = CDec(TextBox1.Text) '//convert string to decimal with short
0 голосов
/ 20 мая 2011

Этот код работает, но он довольно длинный:

 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
...