zoukankan      html  css  js  c++  java
  • 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):

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

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

  • 相关阅读:
    VS2013专业版+QT5.6.3+qt-vs-addin-1.2.5环境搭建
    提权获取进程路径并获取进程列表
    解决Qt发布的程序在xp环境下提示“无法定位程序输入点 K32GetModuleFileNameExA 于动态链接库 KERNEL32.dll 上”的错误
    QT5中使用Echarts图表组件
    Qt5.9生成dll详细图文教程
    Qt 编程指南 & 选择合适的Qt5版本
    Qt 之 国际化(中英文切换)
    Qt资料
    第三次作业
    第二次作业
  • 原文地址:https://www.cnblogs.com/zi-xing/p/4000664.html
Copyright © 2011-2022 走看看