我的winform上有一个NumericUpDown小部件,声明为numEnemyDefence
。我想用它来对变量进行基本数学运算:
damagePerHit -= Double.Parse(numEnemyDefence.Value);
damagePerHit
是双倍的。
但是,我的错误是:
无法将十进制转换为字符串。
字符串来自哪里?为什么解析不起作用?
答案 0 :(得分:1)
使用Convert class和Convert.toDouble方法
答案 1 :(得分:1)
Double.Parse期望它的参数是一个字符串。 NumericUpDown.Value是一个小数。 C#编译器拒绝您的代码,因为它没有为您自动转换从十进制类型到字符串类型。这是一件好事,因为它可以防止许多微妙的错误。
您只需将十进制值转换为双精度值
即可damagePerHit -= (double)numEnemyDefence.Value;
如果您不需要双精度值,我还建议您将变量 damagePerHit 更改(如果可能)为简单小数。
顺便说一下,当你点击floating point inaccuracy problem