2017-07-29 109 views
0

我的Winform上有一个NumericUpDown小部件,声明为numEnemyDefence。我想用这对一个变量进行基本的数学:如何解析从NumericUpDown获取的值?

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

damagePerHit是双。

然而,我与的错误返回:

不能十进制转换为字符串。

字符串从哪里来?为什么解析不起作用?

回答

1

Double.Parse预计它的参数是一个字符串。 NumericUpDown.Value是一个小数。 C#编译器拒绝您的代码,因为它不会为您从小数类型转换为字符串类型。这是一件好事,因为它可以防止很多细微的错误。

您可以十进制值简单地转换为双值

damagePerHit -= (double)numEnemyDefence.Value; 

我还建议改变(如果可能的话)你的变量damagePerHit一个简单的小数,如果你并不需要的精度双重价值。
顺便说一句,这些类型的操作也是其他头部划伤的来源,当你打floating point inaccuracy problem

1

使用Convert类和Convert.toDouble方法