2016-04-22 22 views
0

Ich möchte die Daten konvertieren, wie auf Geld Formatierung, aber es gibt Fehler."keine Überladung für Methode" ToString "dauert 1 Argumente"

Faturamento.ValorNF = decimal.Parse(RsFaturamento.Fields["ValorTotal"].Value.ToString("#.##")); 

Fehlermeldung: "keine Überlastung für die Methode‚ToString‘nimmt 1 Argument"

Ich frage mich, was mit meinem Code falsch?

+3

Nun, was ist die Kompilierung-Art von 'RsFaturamento.Fields [ "ValorTotal"] Value'.? Und warum würden Sie einen Wert in eine Zeichenkette umwandeln, nur um sie erneut zu parsen? –

+0

Es ist, weil ich den Wert zum Beispiel habe: 11541.121221 und möchte zu 11541.12 konvertieren –

+3

Das klingt, als ob Sie 'Math.Round' aufrufen sollten ... –

Antwort

0

Unabhängig von der Art des Objekts Value ist, hat die Klassendefinition für es keine Überladung von ToString(), das ein Argument verwendet. Wenn Wert vom Typ Objekt in der Auflistung ist, müssen Sie es in eine Zeichenfolge konvertieren/konvertieren, die dann für die Parse-Methode der Dezimalstelle bereitgestellt wird. Beachten Sie, dass der ToString ("#. ##") nicht wirklich wichtig ist, wenn Sie ValorNF ein Dezimalobjekt zuweisen, da Sie es immer zu einem späteren Zeitpunkt für die Anzeige formatieren können.

Wenn Sie eine Dezimalstelle auf 2 Dezimalstellen formatieren möchten, würde ich vorschlagen, dass Sie dafür eine Standardformatzeichenfolge verwenden. Im Folgenden wird der Wert in eine Dezimalzahl analysieren und dann die ToString es auf 2 Dezimalstellen in eine Zeichenfolge zu konvertieren verwenden:

decimal.Parse(RsFaturamento.Fields["ValorTotal"].Value.ToString()).ToString("N2", CultureInfo.InvariantCulture); 
+0

jetzt gebe ich diesen Fehler "Argument 1: kann nicht von 'Objekt' in 'Zeichenfolge' konvertieren" –

+0

Vielen Dank, basierend auf Ihrem könnte konvertieren: Math.Round (decimal.Parse (RsFaturamento.Fields ["ValorTotal"]. Wert .ToStrin g()), 2); –

1

welcher Art auch immer Wert sicher ist es eine öffentliche override string ToString hat() {} Methode, die gibt Ihnen die String-Darstellung.

Dann können Sie tun:

decimal money = decimal.Parse(RsFaturamento.Fields["ValorTotal"].Value.ToString()); 

Faturamento.ValorNF = money.ToString("C"));