• C# 类型转换问题一


    问题描述:double类型向int类型的一个转化

    详细描述:课上,我们的web老师,利用C#重新温故了我们初学C语言时的一个小程序——给定成绩,有程序判定等级。学过C语言的童鞋想必都知道这个switch...case..语句。问题不是出现在这儿,而是,在判断之前,我们需要将成绩mod 10 ,也就是我们只想根据百分制成绩的 “十位” 数字来判断成绩的等级(优秀、良好、中等、及格)

    出现问题的代码如下:

    protected void btnGrade_Click(object sender, EventArgs e)
    {
    //将文本的成绩转化为double
    double dGrade = Convert.ToDouble(txtGrade.Text);
    //在网页中输出
    Response.Write(dGrade);
    Response.Write("<br/>");//换行

    //double——>int
    int num = Convert.ToInt16(dGrade);
    Response.Write(num);
    Response.Write("<br/>");

    num = num / 10;//求十位数字

    switch (num)
    {
    case 10:
    case 9: Response.Write("优秀");break ;
    case 8: Response.Write("良好"); break;
    case 7: Response.Write("中等"); break;
    case 6: Response.Write("及格"); break;
    default: Response.Write("不及格"); break;
    }
    }

    结果如下:

    问题的原因:int num = Convert.ToInt16(dGrade);

    Convert.ToInt16(),这个函数的功能,是将double类型的转化为int类型的,这一点没有错误,错就错在,这种转化方式利用了 “四舍五入” 的思想。

    接下来就是就题目来解决问题了。

    方法(1):

        问题出现在 “四舍五入”,特例:59.5,转化以后60.在转化前,我们需要将 59.5-0.5 即可解决目前所有的问题。主要代码如下:

    个人感觉这种方法运用比较狭窄,只是就题目而言,如果 童鞋们 发现这个有问题,还请多多指教。

    方法(2):

    既然我们的目的是只得到double类型的整数,那么有没有函数可以取出double类型的整数部分呢?答案是肯定的。(只有你想不到的,木有代码做不到的)

    方法(3):

    最后的方法,是老师想起来的——强制类型转换

    总结:小问题往往折射出大道理,所以童鞋们,关注细节问题,学会总结。还有一句叫做什么“问题只有一个,解决问题的方法可以有很多”。同时希望路过的你发现有什么错误,请委婉的提出来,谢谢。

  • 相关阅读:
    JavaUtil_04_验证码生成器
    Java微信公众平台开发_02_启用服务器配置
    Log4j2_学习_01_Log4j 2使用教程
    Java_Time_01_获取当前时间
    Eclipse_配置_00_资源帖
    Eclipse_插件_02_jd-eclipse插件的安装
    noip模拟题题解集
    小结:高斯消元
    10月刷题总结
    【vijos】1892 树上的最大匹配(树形dp+计数)
  • 原文地址:https://www.cnblogs.com/zi-xing/p/4000664.html
Copyright © 2020-2023  润新知