【问题标题】:Incrementing decimal numbers in C#在 C# 中递增十进制数
【发布时间】:2011-12-14 06:39:41
【问题描述】:

我正在学习 XNA (C#) 的初学者教程,一旦我学会了渲染和定位,我就转向了自己的方向,拥有了自己的游戏开发经验。

我正在尝试在我的班级 Ship 上创建一个属性 VelocityY。我希望能够通过十进制值来增加这个值,即:

VelocityY += 0.45;

我认为float 是此处所需的类型,但是当我尝试编译时出现此错误:

double类型的文字不能隐式转换为'float'类型;使用“F”后缀来创建这种类型的文字。

我不太确定第一部分是什么意思,因为据我所知,我还没有使用过doubleVelocityY 声明如下:

public float VelocityY = 0;

我尝试改用double 甚至int,但我仍然无法通过非整数递增。整数工作正常。

【问题讨论】:

    标签: c# floating-point numbers


    【解决方案1】:

    文字 0.45 的类型是double。如果你想让它成为浮点数,使用后缀fF,就像编译器错误说的那样:

    VelocityY += 0.45F;
    

    基本上,如果您不为包含小数点的文字指定后缀,则默认为 double。您可以使用后缀使其明确:

    decimal a = 0.45M;
    float b = 0.45F;
    double c = 0.45D;
    

    【讨论】:

    • 谢谢。将类型更改为double 不起作用的原因可能是因为该值用于增加Vector2.Position.Y,我假设它不是double?如果是这样,这一切都说得通。
    • 是的,应该是全部为“双”或全部为“浮动”。
    • @MartyWallace:是的,完全正确。将 double 添加到 float 的结果是双精度数,然后不能将其分配回 float 变量。
    【解决方案2】:

    你应该改变

    public float VelocityY = 0;
    to
    public double VelocityY = 0;
    

    VelocityY += 0.45;
    to
    VelocityY += 0.45F;
    

    【讨论】:

    • 第一个必须有效,除非您在其他地方定义它。或者你错过了什么。现在尝试在您的代码中添加以下行:'public double Var = 0.45;'并检查它...
    【解决方案3】:

    默认情况下,在 C# 环境中,您给出的所有值都为 0.45 或 .68,但在这里您需要通过添加后缀 F 来告诉编译器您给出的数字是浮点数。

    变量 += 0.45F;

    【讨论】:

      猜你喜欢
      • 2011-06-07
      • 2013-05-10
      • 2014-04-18
      • 1970-01-01
      • 2014-08-07
      • 2014-09-18
      • 1970-01-01
      • 2020-07-04
      • 2015-01-27
      相关资源
      最近更新 更多