将int变量转换为double

时间:2012-09-09 14:20:05

标签: c#

您好我是初学C#程序员,我正在尝试创建一个计算器。我似乎无法弄清楚如何将一个int变量转换为double。这是我到目前为止所做的:

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

我该如何做到这一点?

编辑:结果和值都是int变量

5 个答案:

答案 0 :(得分:10)

(double)rezultat /= ...

不好。转换表达式的结果总是一个rvalue,i。即无法分配的东西。相关:您无法更改表达式的类型(您可以强制转换它,但这不会真正改变它的类型,只是暂时作为另一种类型)。一旦你将你的变量声明为int,你将无法在其中存储一个双重 - 但是你施放了分裂等,它最终会被截断。

您很可能必须引入double临时变量来存储除法的结果。

答案 1 :(得分:4)

答案 2 :(得分:1)

如果您的两个变量都不是double s,请将它们分配到double变量然后除以。

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

(double)rezultat /= value

我认为你试图让rezultat成为double并且我认为它没有被宣布为一个而你就是不能这样做。您保留result的结果变量也必须是double,否则您将得到一个未舍入的整数。

答案 3 :(得分:0)

这取决于rezultat变量的类型。如果它是double,那么你不必做任何事情,在任何情况下都不会使用整数除法。但如果它是int,那么您的演员阵容没有任何意义,您无法在double变量中存储int值。

因此,正确的解决方案取决于您想要做什么。但是,如果您的目标是将实际除法的结果设为double,那么您需要一些double变量。如果你有这个,那么你的if不再有任何意义,只需在所有情况下使用double除法。

答案 4 :(得分:0)

试试这个:

         double rezultat = 1992;
         rezultat /= value;

由于resultat必须加倍才能存储rezultat / value的结果。否则,如果resultatvalue都是整数,则不会得到浮点数。例如,5/3 = 1但是(双)5/3 = 1.666667。请注意,值1.6666667只是一个双倍。