我有以下代码行:
    float top = shape.Y + (shape.Height / 2.0) - 4.5;
哪个因错误而失败'Can't cast double to float。Shape.Y 和 shape.height 都是浮点型。
是什么导致了这个错误,最好的方法是确保 top 是一个浮点数(因为我需要将它传递给另一个期望浮点数的函数。
我有以下代码行:
    float top = shape.Y + (shape.Height / 2.0) - 4.5;
哪个因错误而失败'Can't cast double to float。Shape.Y 和 shape.height 都是浮点型。
是什么导致了这个错误,最好的方法是确保 top 是一个浮点数(因为我需要将它传递给另一个期望浮点数的函数。
尝试用 包裹您的数字f,因为通常2.0代表一个double数字。float 您可以在此处阅读更多信息。
float top = shape.Y + (shape.Height / 2.0f) - 4.5f;
原因是你的文字2.0和4.5类型是double.
然后在你的表情中
 shape.Y + (shape.Height / 2.0) - 4.5
划分似乎在 afloat和 a之间double。但是有一个从to的隐式转换(另一个方向的转换不是隐式的),所以“扩大”到 a 。然后加上这个双倍,出于同样的原因,也扩大到一个。然后整个表达式得到 type 。floatdoubleHeightdoubleYYdoubledouble
但是您将top变量声明为 a float,并且double无法将表达式float隐式转换为。
富士给出了解决方案:如果将文字写成2.0f(或只是2f)和4.5f,那么加法、除法和差值将一直计算为floats,无需转换。
(实际上,如果您将分母指定为2,它将隐式转换int为float,但正如您现在所知道的那样,如果您将其包含在内,可能更容易看出意图f。)