57.浮点数与整数的类型转换
57.1 题目
float f = 10.4;
int i = f / 2;
Console.WriteLine(i);
请问上面这段代码的打印结果是多少?
57.2 深入解析
会报错。代码片段中存在两个错误:
float f = 10.4;应该改为float f = 10.4f;,因为在C#中浮点数默认是double类型,需要显式地加上f后缀来表示float类型。int i = f / 2;应该改为int i = (int)(f / 2);,因为f / 2的结果是float类型,不能直接赋值给int类型,需要进行显式类型转换。
修改后的代码:
float f = 10.4f; // 定义浮点数时加上f后缀
int i = (int)(f / 2); // 显式类型转换
Console.WriteLine(i); // 打印结果
这段代码将打印结果 5,因为 10.4 / 2 = 5.2,然后强制转换为 int 类型时, 5.2 将被截断为 5。
57.3 答题示例
这段代码会因编译错误无法直接运行,需修正后才能得到结果:
原代码错误:
float f = 10.4;中,10.4默认是double类型,需加f后缀声明为float(即10.4f);int i = f / 2;中,f / 2结果为float类型,不能直接赋值给int,需显式转换(即(int)(f / 2))。修正后代码运行时,
10.4f / 2 = 5.2f,强制转换为int时小数部分被截断,因此打印结果为 5。
57.4 关键词联想
C#类型转换
float后缀
显式转换
截断
编译错误
数值运算
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com