我收到此错误。
operator *不能应用于double和decimal类型的操作数
当我看到如何修复它时,添加后缀m或M(尝试不起作用)
double[] statsBase = { 708, 2.83, 288, 3.3, 63, 0.9, 10, 20, 350, 180, 900 };
double[] statsPerLvl = { 52, 0.21, 10, 0, 2.93, 0, 1.5, 2.5, 0, 0, 0 };
double[] statsWithLvl = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
for (int num = 0; num <= 10; num++)
{
statsWithLvl[num] = statsBase[num] + (statsPerLvl[num] * numericUpDown_level.Value);
}
答案 0 :(得分:2)
只需这样做:
statsWithLvl[num] = statsBase[num]
+ (statsPerLvl[num] * (double)numericUpDown_level.Value);
答案 1 :(得分:0)
我假设statWithLvl
和statsBase
是双倍的,因为+
运算符没有错误。问题是numericUpDown
的Value属性是小数。如果我的假设是正确的,那么简单的解决方法是转换numericUpDown
的Value属性。
答案 2 :(得分:0)
您不能将小数乘以double。您可以通过类型转换来解决此问题。
十进制类型设计用于财务计算,因为它提供了高精度,但代价是减少了字节大小的范围。
您可以停止使用double
并改用decimal
。
MSDN:
If you want a numeric real literal to be treated as decimal, use the suffix m or M
答案 3 :(得分:0)
后缀仅与文字相关。你没有文字。您需要将Value属性(类型为Decimal)转换为Double,以便将其与另一个Double相乘。出于此目的使用Convert.ToDouble。