您好我是初学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变量
答案 0 :(得分:10)
(double)rezultat /= ...
不好。转换表达式的结果总是一个rvalue,i。即无法分配的东西。相关:您无法更改表达式的类型(您可以强制转换它,但这不会真正改变它的类型,只是暂时作为另一种类型)。一旦你将你的变量声明为int
,你将无法在其中存储一个双重 - 但是你施放了分裂等,它最终会被截断。
您很可能必须引入double
临时变量来存储除法的结果。
答案 1 :(得分:4)
Convert.ToDouble(int);
http://msdn.microsoft.com/en-us/library/system.convert.todouble.aspx
答案 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
的结果。否则,如果resultat
和value
都是整数,则不会得到浮点数。例如,5/3 = 1但是(双)5/3 = 1.666667。请注意,值1.6666667只是一个双倍。