c#中数组中不同数据类型的乘法

本文关键字:数据类型 数组 | 更新日期: 2023-09-27 18:18:56

我收到一个错误"操作符'*'不能应用于'int'和'decimal[]'类型的操作数",因为我试图用不同的数据类型乘以两个值(一个是位于数组中的值)。我的问题是我如何能够多个numberOfMinutes * perMinuteRate在下面的代码?我的变量名为total,我将其声明为双数据类型(尽管可能不正确)。

我尝试改变数据类型并使用格式化(如ToString),但我不确定该怎么做。我也试着用谷歌搜索答案,但没有成功。

我绝不是一个专业的程序员;我不在学校。我是一名正在学习编程的数据分析师。

下面是我的代码:
  static void Main(string[] args)
  {
     int[] areaCodes = { 262, 414, 608, 715, 815, 920 };
     decimal[] perMinuteRate = { .07m, .1m, .05m, .16m, .24m, .14m };
     int numberOfMinutes;
     int userAreaCode;
     string inputString = "1";
     while (inputString != "0")
     {
        int x;
        Console.WriteLine("Enter the area code for your call (or 1 to end):");
        inputString = Console.ReadLine();
        userAreaCode = Convert.ToInt32(inputString);
        Console.WriteLine("How many minutes will your call last?");
        inputString = Console.ReadLine();
        numberOfMinutes = Convert.ToInt32(inputString);
        for (x = 0; x < areaCodes.Length; x++)
        {
           if (userAreaCode == areaCodes[x])
           {
              ***double total = numberOfMinutes * perMinuteRate;***
              Console.WriteLine("You call to {0} will cost {1} per minute for a total of {2}.", areaCodes[x], perMinuteRate[x].ToString("C"), total.ToString("C"));
              x = areaCodes.Length;
           }
        }
        if (x != areaCodes.Length)
        {
           Console.WriteLine("I'm sorry; we don't cover that area.");
           inputString = "1";
        }
        else
        {
           Console.WriteLine("Thanks for being our customer.");
           inputString = "0";
        }
        Console.ReadLine();
     }
  }

提前感谢。

c#中数组中不同数据类型的乘法

变化:

double total = numberOfMinutes * perMinuteRate;

double total = (double)(numberOfMinutes * perMinuteRate[x]);

就像你在下一行索引到perMinuteRate一样。

表达式[int] * [decimal]将产生一个小数,并且强制转换(double)将其转换为双精度

为避免丢失精度,将其更改为:

decimal total = numberOfMinutes * perMinuteRate[x];