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

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

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

  • 相关阅读:
    高精度乘法
    使用BFG清除git仓库中的隐私文件或大文件
    java运行的问题
    eclipse编写的java程序在dos环境下运行的写法
    win32汇编实现阶乘和斐波那契数列
    十个数字不同,实现加减乘。暴力枚举法
    实现一个类模板
    循环队列类模板和函数模板c++实例
    C++析构函数为什么要为虚函数
    1012-Joseph 约瑟夫问题
  • 原文地址:https://www.cnblogs.com/zi-xing/p/4000664.html
Copyright © 2011-2022 走看看