2017-07-29 2 views
0

Ich habe ein NumericUpDown-Widget auf meiner Winform als numEnemyDefence deklariert. Ich möchte dies auf eine Variable grundlegende mathematische ausführen verwenden:Wie analysiert man einen Wert von NumericUpDown?

damagePerHit -= Double.Parse(numEnemyDefence.Value); 

Wo damagePerHit eine doppelt so hoch ist.

Allerdings bin ich mit dem Fehler zurückgegeben:

nicht Dezimalzahl in String umwandeln kann.

Woher kommt die Zeichenfolge? Und warum funktioniert das Parse nicht?

Antwort

1

Double.Parse erwartet ihr Argument ein String zu sein. NumericUpDown.Value ist eine Dezimalzahl. Der C# -Compiler weist Ihren Code zurück, da er für Sie keine automatischen Konvertierungen vom Dezimaltyp in den Zeichenfolgetyp vornimmt. Und das ist eine gute Sache, weil es viele subtile Fehler verhindert.

Sie können einfach den Dezimalwert in einen doppelten Wert Guss

damagePerHit -= (double)numEnemyDefence.Value; 

Ich empfehle auch damagePerHit auf eine einfache Dezimalzahl (wenn möglich) Ihre Variable zu ändern, wenn Sie die Genauigkeit eines nicht brauchen doppelter Wert.
Übrigens sind diese Art von Operationen auch Quelle für andere Kopf Kratzer, wenn Sie die floating point inaccuracy problem

treffen
1

Verwenden Convert-Klasse und Convert.ToDouble Methode

Verwandte Themen