14

私は初心者の C# プログラマーで、電卓を作成しようとしています。int変数をにキャストする方法がわかりませんdouble。これは私がこれまでに持っているものです:

public void oImpartire() {
    if (rezultat % value == 0)
    {
        rezultat /= value;
    }
    else {
       (double)rezultat /= value;  // this should be double but I get an error
    }
}

どうすればこれを機能させることができますか?

編集: と は両方ともresult変数valueですint

4

5 に答える 5

13
(double)rezultat /= ...

よくない。キャスト式の結果は常に右辺値、つまり割り当てることができないものになります。関連:式のタイプを変更することはできません(キャストすることはできますが、実際にはタイプを変更せず、一時的に別のタイプとして機能します)。変数を、たとえば、として宣言すると、その変数にintdoubleを格納することはできなくなります。ただし、除算などをキャストすると、最終的には常に切り捨てられます。

ほとんどdoubleの場合、除算の結果を格納するために一時変数を導入する必要があります。

于 2012-09-09T14:23:08.430 に答える
12
   Convert.ToDouble(int);

http://msdn.microsoft.com/en-us/library/system.convert.todouble.aspx

于 2012-09-09T14:22:44.900 に答える
2

両方の変数がdoubles でない場合は、それらを変数に割り当ててdoubleから除算します。

VarDouble = (double)int.....; VarDouble /= VarDouble1 etc

(double)rezultat /= value

rezultatあなたはaを作ろうとしていると思いますがdouble、それは 1 つとして宣言されておらず、それを行うことはできないと思います。を保持する結果の変数resultも である必要があります。そうしdoubleないと、丸められていない整数が得られます。

于 2013-05-10T14:01:35.500 に答える
0

これは、rezultat変数の型によって異なります。の場合double、何もする必要はありません。整数除算はいずれの場合も使用されません。しかし、それが の場合int、キャストは意味がありません。変数にdouble値を格納することはできません。int

したがって、正しい解決策は、正確に何をしたいかによって異なります。しかし、実際の除算の結果を として取得することが目標である場合は、そのための変数doubleが必要になります。doubleそして、それがある場合は、ifもはや意味がありませんdouble。すべての場合に除算を使用してください。

于 2012-09-09T14:30:31.267 に答える
0

これを試して:

double rezultat = 1992;
rezultat /= value;

resultatdoubleの結果を格納するには、 でなければなりませんrezultat / valueresultatそれ以外の場合、との両方valueintの場合、浮動小数点数は得られません。たとえば、5 / 3 = 1、しかし(double)5 / 3 = 1.666667. 値1.6666667は単なるdouble.

于 2012-09-09T14:44:26.460 に答える