在2个列表之间进行数学

时间:2014-02-28 02:40:12

标签: c# list math

我收到此错误。

  

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);
}

4 个答案:

答案 0 :(得分:2)

只需这样做:

statsWithLvl[num] = statsBase[num]
    + (statsPerLvl[num] * (double)numericUpDown_level.Value);

答案 1 :(得分:0)

我假设statWithLvlstatsBase是双倍的,因为+运算符没有错误。问题是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。