当前位置:编程学习 > C#/ASP.NET >>

关于数据计算的问题,无法正确计算

 if (siji_n == 0 && siji_m == 0 && erji_q==0)//及格和不及格=0,表示所有成绩都在良好以上
                {
                    double youxiulv = siji_i / (siji_i + siji_j);
                
                    if (youxiulv >= 0.5)
                        lb_shixi.Text = "优秀";

做了一个成绩评定系统,siji_i等都是int型,youxiulv 为double型,但是每次运行都是无法取得正确的数值。比如youxiulv = siji_i / (siji_i + siji_j);===>youxiulv =2/(1+2);
得到的结果是youxiulv =0;
为什么会出现这个情况,以前都没有的 --------------------编程问答-------------------- 因为你分子是int型,所以结果也是int型,你想要double型可以把分子改成double型试试 --------------------编程问答-------------------- youxiulv = (double)(siji_i) / (double)(siji_i + siji_j); --------------------编程问答-------------------- 计算精度问题,你全体换成double计算即可

ps:在做除法前 ,先断言一下“siji_i + siji_j”不为0,是个不错的习惯。 --------------------编程问答--------------------
youxiulv =2.0/(1+2);只需要其中一个为浮点数即可 --------------------编程问答--------------------
引用 4 楼 Chinajiyong 的回复:
youxiulv =2.0/(1+2);只需要其中一个为浮点数即可


标准答案。
因为c#中的除法的结果总是整数。
2.0/(1+2)时,会将3隐式转换到double类型
在c#中两个double相除总是double类型。 --------------------编程问答-------------------- 因为c#中整数除法的结果总是整数。
纠正下 --------------------编程问答-------------------- 除数和被除数都是Int整型,“/”符号是整除,结果有小数的,直接舍去,(例如youxiulv =2/(1+2);)所以结果是0.
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,