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
    }
}

我怎样才能使这项工作?

编辑:resultvalue都是int变量。

4

5 回答 5

13
(double)rezultat /= ...

不好。强制转换表达式的结果总是一个右值,即不能赋值的东西。相关:您不能更改表达式的类型(您可以强制转换它,但这不会真正改变它的类型,只是暂时充当另一种类型)。一旦您将变量声明为 an int,您将无法在其中存储双精度数 - 但是您转换除法等。它最终总是会被截断。

您很可能必须引入一个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

我认为您正在尝试制作rezultatadouble并且我认为它没有被声明为 one 并且您不能那样做。你得到的变量也result必须是 a double,否则你只会得到一个不四舍五入的整数。

于 2013-05-10T14:01:35.500 回答
0

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

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

于 2012-09-09T14:30:31.267 回答
0

试试这个:

double rezultat = 1992;
rezultat /= value;

resultat必须是 adouble来存储 的结果rezultat / value。否则,如果两者都是和resultat,您将不会得到浮点数。例如,,但是。请注意,该值只是 a 。valueint5 / 3 = 1(double)5 / 3 = 1.6666671.6666667double

于 2012-09-09T14:44:26.460 回答