将包含int的对象强制转换为float会导致InvalidCastException

程序先生
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    var fP18VaR = (float) (int)e.Values[0];
}

我越来越

InvalidCastException-指定的转换无效

为什么不起作用?

e.Values [0]的值为:6 666,00

莫伊斯·雷拜(Moez Rebai)

您在这里遇到的问题是C#强制转换运算符在不同情况下的含义不同。

以您给出的以下示例为例:

object num = 10;
float fnum = (float)num;

C#编译器会认为您正在告诉它:“变量num表示装箱的float;请取消装箱并返回装箱的值。”

您收到错误,因为它不是盒装浮点数,而是盒装整数。

问题在于C#对两个完全不相关的操作使用外观相同的语法:“ unbox”和“ numeric conversion”。这是强制转换表示数字转换的示例:

int num = 10;
float fnum = (float)num;

几乎完全相同的代码,但这不会给您错误。那是因为C#编译器将这完全不同地对待-此代码意味着:“请执行数字转换,将存储在'num'中的整数转换为单精度浮点值。“

您如何知道它将选择这两个完全不相关的操作中的哪一个?全部与源和目标类型有关。如果要从“对象”转换为值类型,则始终将其视为取消选中框。如果要从一种数字类型转换为另一种数字类型,则始终将其视为数字转换。

那么如何获得想要的结果?好吧,您需要同时执行这两种操作:您需要将int拆箱,然后将其转换为float。因此,您实际上需要两个强制转换:

object num = 10;
float fnum = (float) (int)num; 

厉害吧?

在这里执行所需操作的最简单方法是避免完全转换。只是这样做:

float fnum = Convert.ToSingle(num); 

如果可能的话,这会将类型强制为单精度浮点数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将int转换为float会导致非法指令

来自分类Dev

将int转换为float会导致非法指令

来自分类Dev

将类型“ 340”强制转换为int会导致“ 34”丢失最后一个零

来自分类Dev

将字符串数据插入varchar列会导致无效的强制转换为int

来自分类Dev

什么时候强制转换为int会导致问题?

来自分类Dev

静态将(int)强制转换为(float)无小数

来自分类Dev

将Firebase值(Int)转换为String会导致错误

来自分类Dev

将int转换为float会导致错误的值(尽管不是通常的十进制舍入错误)

来自分类Dev

将int转换为float会导致错误的值(尽管不是通常的十进制舍入错误)

来自分类Dev

将float转换为int会更改值

来自分类Dev

显式强制转换为定义的类型将抛出InvalidCastException

来自分类Dev

InvalidCastException:无法将SqlString强制转换为SqlGuid

来自分类Dev

将Float转换为Int

来自分类Dev

将float转换为int

来自分类Dev

从Float转换为Int会更改输出

来自分类Dev

当DataFrame包含对象时,pandas groupby数字函数将数字强制转换为对象

来自分类Dev

System.InvalidCastException:无法将类型为“ System.Int32”的对象转换为类型为“ System.String”的对象

来自分类Dev

将字符串强制转换为int导致值更改

来自分类Dev

可能的 System.InvalidCastException 将 Enum 转换为 int?

来自分类Dev

为什么将IQueryable强制转换为.toList()以将数据包含到对象DbContext中?

来自分类Dev

在将void指针强制转换为float * / int *时取消引用

来自分类Dev

与列表相乘时为什么将float64强制转换为int?

来自分类Dev

强制转换为OrganizationServiceContext时发生InvalidCastException

来自分类Dev

将`local int *`转换为`local long16 *`会导致内核给我错误的结果

来自分类Dev

在Swift中强制转换为“ as?Int”会产生不同的结果

来自分类Dev

在Swift中强制转换为“ as?Int”会产生不同的结果

来自分类Dev

强制将COM对象强制转换为接口

来自分类Dev

强制将COM对象强制转换为接口

来自分类Dev

Swift:将任何对象强制转换为Int64 = nil

Related 相关文章

  1. 1

    将int转换为float会导致非法指令

  2. 2

    将int转换为float会导致非法指令

  3. 3

    将类型“ 340”强制转换为int会导致“ 34”丢失最后一个零

  4. 4

    将字符串数据插入varchar列会导致无效的强制转换为int

  5. 5

    什么时候强制转换为int会导致问题?

  6. 6

    静态将(int)强制转换为(float)无小数

  7. 7

    将Firebase值(Int)转换为String会导致错误

  8. 8

    将int转换为float会导致错误的值(尽管不是通常的十进制舍入错误)

  9. 9

    将int转换为float会导致错误的值(尽管不是通常的十进制舍入错误)

  10. 10

    将float转换为int会更改值

  11. 11

    显式强制转换为定义的类型将抛出InvalidCastException

  12. 12

    InvalidCastException:无法将SqlString强制转换为SqlGuid

  13. 13

    将Float转换为Int

  14. 14

    将float转换为int

  15. 15

    从Float转换为Int会更改输出

  16. 16

    当DataFrame包含对象时,pandas groupby数字函数将数字强制转换为对象

  17. 17

    System.InvalidCastException:无法将类型为“ System.Int32”的对象转换为类型为“ System.String”的对象

  18. 18

    将字符串强制转换为int导致值更改

  19. 19

    可能的 System.InvalidCastException 将 Enum 转换为 int?

  20. 20

    为什么将IQueryable强制转换为.toList()以将数据包含到对象DbContext中?

  21. 21

    在将void指针强制转换为float * / int *时取消引用

  22. 22

    与列表相乘时为什么将float64强制转换为int?

  23. 23

    强制转换为OrganizationServiceContext时发生InvalidCastException

  24. 24

    将`local int *`转换为`local long16 *`会导致内核给我错误的结果

  25. 25

    在Swift中强制转换为“ as?Int”会产生不同的结果

  26. 26

    在Swift中强制转换为“ as?Int”会产生不同的结果

  27. 27

    强制将COM对象强制转换为接口

  28. 28

    强制将COM对象强制转换为接口

  29. 29

    Swift:将任何对象强制转换为Int64 = nil

热门标签

归档