【问题标题】:Cast int variable to double将 int 变量转换为 double
【发布时间】:2012-09-02 14:55:35
【问题描述】:

我是一名初学者 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 变量。

【问题讨论】:

  • 阅读错误信息。
  • 为什么要以任何方式将 int 转换为 double ?整数没有任何小数。无论如何,您可以使用 double.Parse() 方法。
  • @Mitja 不,你不能; double.Parse 仅适用于 字符串
  • 我们不知道rezultatvalue 的类型,因为您没有包含声明它们的代码段。在提出涉及选角的问题时,此类信息很重要。
  • @H2CO3 考虑到这个问题,我认为这不是一个明显的假设。

标签: c# casting type-conversion


【解决方案1】:
(double)rezultat /= ...

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

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

【讨论】:

  • 附带说明,如果 OP 正在开发一个计算器应用程序,他最好使用 decimal 类型而不是 double
  • @Rotem 是的。不过,我仍然不明白他为什么需要对双打进行模运算..
【解决方案2】:

【讨论】:

  • 是的,但实际上不会将我的变量转换为双变量,它会将值转换为不是吗?
  • 这没有回答问题。
  • @user985482 你不能转换变量的类型。 C# 是静态类型的。
【解决方案3】:

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

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

(double)rezultat /= value

我认为您正在尝试将rezultat 设为double,并且我认为它没有被声明为一个,而您只是不能这样做。包含result 的结果变量也必须是double,否则您将得到一个未四舍五入的整数。

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

      试试这个:

      double rezultat = 1992;
      rezultat /= value;
      

      resultat 必须是double 才能存储rezultat / value 的结果。否则,如果resultatvalue 都是int,您将不会得到浮点数。例如,5 / 3 = 1,但(double)5 / 3 = 1.666667。请注意,1.6666667 的值只是 double

      【讨论】:

        猜你喜欢
        • 2011-05-10
        • 1970-01-01
        • 2011-09-17
        • 2013-06-02
        • 1970-01-01
        • 1970-01-01
        • 2017-07-05
        • 2019-02-19
        相关资源
        最近更新 更多