簡體   English   中英

C#,運算符'*'不能應用於'double'和'decimal'類型的操作數

[英]C#, Operator '*' cannot be applied to operands of type 'double' and 'decimal'

這個錯誤應該是一個簡單的錯誤,但我似乎無法使它工作。 問題在於這個相同的代碼在程序的早期工作。 我沒有看到任何理由在這個實例上發送錯誤而不是之前的四個錯誤。 參考下面的代碼,隨時提供任何批評,因為它應該讓我更好。 如果重要,我正在使用Sharp Develop 2.2。

以下是有效代碼示例:

void calc2Click(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(tb2_fla.Text) & String.IsNullOrEmpty(tb2_e.Text) | String.IsNullOrEmpty(tb2_fla.Text) & String.IsNullOrEmpty(tb2_e.Text) | String.IsNullOrEmpty(tb2_e.Text))
    {
        MessageBox.Show("Enter either kVA and Voltage or FLA and Voltage", "Invalid Data Entry", MessageBoxButtons.OK);
    }       

        if (!String.IsNullOrEmpty(tb2_kva.Text) & !String.IsNullOrEmpty(tb2_e.Text))
    { 
            decimal x, y, z;
            x = decimal.Parse(tb2_kva.Text);      
            y = decimal.Parse(tb2_e.Text);
            z = (x * 1000) / (1.732050808m * y); //the m at the end of the decimal allows for the multiplication of decimals    
            tb2_fla.Text = z.ToString();
            tb2_fla.Text = Math.Round(z,2).ToString();
    }
        else
    {
        if (!String.IsNullOrEmpty(tb2_fla.Text) & !String.IsNullOrEmpty(tb2_e.Text))
    { 
            decimal x, y, z;
            x = decimal.Parse(tb2_fla.Text);      
            y = decimal.Parse(tb2_e.Text);
            z = (x * y * 1.732050808m) / 1000; //the m at the end of the decimal allows for the multiplication of decimals  
            tb2_kva.Text = Math.Round(z,2).ToString();

    }

以下是在此帖子的主題行中發送錯誤的代碼示例:

void Calc4Click(object sender, EventArgs e)
{
        if (!String.IsNullOrEmpty(tb4_fla.Text) && String.IsNullOrEmpty(tb4_e.Text) || String.IsNullOrEmpty(tb4_kw.Text) & String.IsNullOrEmpty(tb4_e.Text) || String.IsNullOrEmpty(tb4_e.Text))
        {   //If values are entered improperly, the following message box will appear
        MessageBox.Show("Enter either FLA and Voltage or kW and Voltage", "Invalid Data Entry", MessageBoxButtons.OK);
        }   


        if (!String.IsNullOrEmpty(tb4_fla.Text)&& !String.IsNullOrEmpty(tb4_e.Text)&& String.IsNullOrEmpty(tb4_kw.Text))
        {//If the user eneters FLA and Voltage calculate for kW

            decimal x, y, z;
            x = decimal.Parse(tb4_fla.Text);
            y = decimal.Parse(tb4_e.Text);
            z = (x*y)*(.8 * 1.732050808m);
            tb4_kw.Text = Math.Round(z,0).ToString();

        }               

        if (!String.IsNullOrEmpty(tb4_kw.Text) && !String.IsNullOrEmpty(tb4_e.Text) && String.IsNullOrEmpty(tb4_fla.Text))
        {;//If the user enters kW and Voltage calculate for FLA
            decimal x, y, z;
            x = decimal.Parse(tb4_kw.Text);
            y = decimal.Parse(tb4_e.Text);
            z = (1000 * x)/(y * 1.732050808m)* .8;
            tb4_fla.Text = Math.Round(z,0).ToString();
        }

    }

我感謝任何幫助。 謝謝。

.8m instead of .8

你沒有說它是哪一行,但我打賭這兩個:

z = (x*y)*(.8 * 1.732050808m);

和:

z = (1000 * x)/(y * 1.732050808m)* .8;

請注意,您的.8沒有'm'限定符。 我看到你提供的每個其他地方都提供了這個。

在這一行:

z =(x y) (。8 * 1.732050808m);

你指定.8作為文字,但沒有'm'后綴,文字指定一個雙精度。

z =(x y) (。8m * 1.732050808m);

會解決它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM