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):

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

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

  • 相关阅读:
    Linux下安装python
    oracle 12c使用问题总结
    oracle下载地址
    Informatica PowerCenter下载地址
    主流ETL工具
    【phonegap】下载文件
    eclipse显示包的层次关系
    UltraISO 9.6.5.3237
    Windows操作系统设置代理
    wireshark常用的过滤命令
  • 原文地址:https://www.cnblogs.com/zi-xing/p/4000664.html
Copyright © 2011-2022 走看看