10
votes

Convertir une chaîne en décimale dans vb.net

Quel sera le moyen le plus simple de convertir une chaîne en décimale?

entrée: xxx

sortie sera xxx

J'ai essayé d'utiliser ce code: xxx


7 Réponses :


14
votes

Utilisez décimal.parse code> pour convertir en nombre décimal, puis utilisez .tostring ("format ici") code> pour reconvertir à une chaîne.

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


8 commentaires

J'essaie ceci mais le résultat que je veux est négatif devrait être à la fin. Dim A comme chaîne A = "4000.00-" A = décimal.parse (a) .tostring ("##, ###. 00") console.write (a) "Résultat 4 000,00


Sinon, il y a l'approche non déclarée: (un <0)? Math.abs (a) .tostring ("##, ### 0.00") + "-": A.Tostring ("##, ### 0.00");


toujours pas de chance. Je vais l'essayer d'une manière différente. Je posterai ici une fois que je l'ai eu. Merci pour votre réponse.


Ma dernière approche de recours fera le travail. Bien que pas entièrement élégant.


Lorsque je convertit je convertit en VB, j'ai eu une erreur sombre comme string = si ((((a <0), math.abs (a) .tostring ("##, ### 0.00") & "-", A.Tostring ( "##, ### 0.00"))


Dim Aasdecimal comme décimal = décimal.parse (a) utilise ensuite AasDecimal dans la déclaration que je vous ai donnée.


Ceci est le site Web que j'ai utilisé pour convertir votre code développeurfusion.com/tools/convert / csharp-to-vb


Mon original utilisé A défini comme une chaîne. C'est pourquoi j'ai introduit Aasadecimal. Vous obtenez probablement une exception de typast ou quelque chose.



2
votes

Le suivant fonctionne bien pour moi, mais je ne sais pas s'il est correct ou non.

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


1 commentaires

La ligne médiane est inutile. Vous convertissez un double en une chaîne, puis de l'analyser à nouveau au double. Maintenant, si vous essayez de tronquer des endroits extrêmement décimaux (c'est-à-dire: 40000.0001 à 40000.00), cela fonctionnera, mais les mathématiques (A, 2) seront plus efficaces.



6
votes

Utilisez décimal.tryparse xxx


0 commentaires

0
votes

Ce code fonctionne, mais il est assez long:

 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


0 commentaires

2
votes
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

0 commentaires

6
votes

pour vb.net:

CDec(Val(a))


0 commentaires

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

0 commentaires