标题:C#简易运算器程序问题
只看楼主
张旭鹏
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-10-31
结帖率:100%
已结贴  问题点数:5 回复次数:8 
C#简易运算器程序问题
各位同学,最近我在用C#做计算器过程中发现一个问题。以下是我问题的简单代码和截图:8.6-8.3=0.29999999999? 5.3-5.2=0.0999999999999996?????
using System;
public class Compute
{

    static void Main()
    {
        double num1=0;
        double num2=0;
        double result;
        string oper;
        string flag="Y",num1Str,num2Str;
   
        while(flag=="Y"||flag=="y")
        {
            Console.WriteLine("*****************简易运算程序****************");
            Console.WriteLine("请输入第一个操作数num1:");
            num1Str=Console.ReadLine();
            num1=Double.Parse(num1Str);
            Console.WriteLine("请输入第二个操作数num2:");
            num2Str=Console.ReadLine();
            num2=Double.Parse(num2Str);
            Console.WriteLine("请输入运算符oper:");
            oper=Console.ReadLine();
            switch(oper)
            {
                case"+":
                    Console.WriteLine("加法运算结果:");
                    result=num1+num2;
                    Console.WriteLine(Convert.ToString(result));
                    break;
                case"-":
                    Console.WriteLine("减法运算结果:");
                    result=num1-num2;
                    Console.WriteLine(Convert.ToString(result));
                    break;
                case"*":
                    Console.WriteLine("乘法运算结果:");
                    result=num1*num2;
                    Console.WriteLine(Convert.ToString(result));
                    break;
                case"/":
                    if (num2==0)
                        Console.WriteLine("除数不能为0");
                    else
                    {
                        Console.WriteLine("除法运算结果:");
                        result=num1/num2;
                        Console.WriteLine(Convert.ToString(result));
                    }
                    break;
                default:
                    Console.WriteLine("无法识别运算表达式!");
                    break;
            }
            Console.WriteLine("************************************");
            Console.WriteLine("是否继续:'Y/y' OR 'N/n':");
            flag=Console.ReadLine();
        }
    }
}
搜索更多相关主题的帖子: result public double 
2012-10-31 20:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
正常啊

授人以渔,不授人以鱼。
2012-10-31 20:06
张旭鹏
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-10-31
得分:0 
回复 2楼 TonyDeng
这样的结果还正常?结果明明不对!求解答
2012-10-31 20:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
计算机的浮点数就是这个样子,谁叫你不指定精度输出,它自己会四舍五入。不用Convert.ToString()的,WriteLine()会处理各种类型的数据。

授人以渔,不授人以鱼。
2012-10-31 20:26
张旭鹏
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-10-31
得分:0 
以下是引用TonyDeng在2012-10-31 20:26:34的发言:

计算机的浮点数就是这个样子,谁叫你不指定精度输出,它自己会四舍五入。不用Convert.ToString()的,WriteLine()会处理各种类型的数据。
这位同学你倒是说到点,不过我还是不知道该怎么解决?我改成WriteLine()也不行,还是一样,该怎么指定精度呢输出呢?
2012-10-31 21:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:5 
WriteLine("{0:N2}", result)
精确到小数点后2位,自己定。如果你要真正精确的数值,使用.NET基础类库中新提供的精确数据类型,不告诉你那是什么类型,自己看看书,会找得到。

授人以渔,不授人以鱼。
2012-10-31 21:16
张旭鹏
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-10-31
得分:0 
回复 6楼 TonyDeng
谢谢!
2012-10-31 21:19
smart0721
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:106
专家分:468
注 册:2012-2-10
得分:0 
你要精确可以用decimal类型,会比都double类型精确些!你试试看,我财务计算都是用decimal型
2012-10-31 21:31
张旭鹏
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-10-31
得分:0 
回复 8楼 smart0721
Soga !谢谢!
2012-10-31 23:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-385361-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.078914 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved