C#开发技术 计算器(二进制、八进制、十进制)

前言

该计算器程序支持二进制、八进制、十进制之间的互相转换,同时也支持二进制、八进制、十进制的计算。但是需要注意的是:程序可能存在着些许错误,请体谅笔者的水平。笔者提供了程序的完整文件,包括程序源代码。
本程序提供了“面向对象”和“面向过程”两种设计思路。

界面效果图

在这里插入图片描述

Calculator类的代码

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyCalculator
{
    public class Calculator
    {
        //进制类型的枚举
        public enum _bases { bin = 2, oct = 8, dec = 10 }
        //标志当前运算进制,默认为十进制
        public _bases _currentBase = _bases.dec;

        //运算符的枚举
        public enum _operators { add = 1, subtract = 2, multiply = 3, divide = 4}
        //运算符默认为“+”
        public _operators _operator = _operators.add;

        //进行各种进制下的各种运算
        public string calculate(string num1, string num2)
        {
            string result;
            //如果是二进制
            if(_currentBase == _bases.bin)
            {
                if (_operator == _operators.add)
                    result = BinAdd(num1, num2);
                else if (_operator == _operators.subtract)
                    result = BinSubtract(num1, num2);
                else if (_operator == _operators.multiply)
                    result = BinMultiply(num1, num2);
                else
                    result = BinDivide(num1, num2);
            }
            //如果是八进制
            else if (_currentBase == _bases.oct)
            {
                if (_operator == _operators.add)
                    result = OctAdd(num1, num2);
                else if (_operator == _operators.subtract)
                    result = OctSubtract(num1, num2);
                else if (_operator == _operators.multiply)
                    result = OctMultiply(num1, num2);
                else
                    result = OctDivide(num1, num2);
            }
            //如果是十进制
            else
            {
                if (_operator == _operators.add)
                    result = DecAdd(num1, num2);
                else if (_operator == _operators.subtract)
                    result = DecSubtract(num1, num2);
                else if (_operator == _operators.multiply)
                    result = DecMultiply(num1, num2);
                else
                    result = DecDivide(num1, num2);
            }

            return result;
        }
        
        //二进制转八进制
        public string BinToOct(string bin)
        {
            string oct;
            oct = Convert.ToString(Convert.ToInt32(bin, 2), 8);

            return oct;
        }

        //二进制转十进制
        public string BinToDec(string bin)
        {
            string dec;
            dec = Convert.ToInt32(bin, 2).ToString();

            return dec;
        }

        //八进制转二进制
        public string OctToBin(string oct)
        {
            string bin;
            bin = Convert.ToString(Convert.ToInt32(oct, 8), 2);

            return bin;
        }

        //八进制转十进制
        public string OctToDec(string oct)
        {
            string dec;
            dec = Convert.ToInt32(oct, 8).ToString();

            return dec;
        }

        //十进制转二进制
        public string DecToBin(string dec)
        {
            string bin;
            bin = Convert.ToString(Convert.ToInt32(dec), 2);

            return bin;
        }

        //十进制转八进制
        public string DecToOct(string dec)
        {
            string oct;
            oct = Convert.ToString(Convert.ToInt32(dec), 8);

            return oct;
        }

        //二进制加法
        public string BinAdd(string num1, string num2)
        {
            string result;
            string num1Dec = BinToDec(num1);
            string num2Dec = BinToDec(num2);
            result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) + Convert.ToInt32(num2Dec)));

            return result;
        }

        //二进制减法
        public string BinSubtract(string num1, string num2)
        {
            string result;
            string num1Dec = BinToDec(num1);
            string num2Dec = BinToDec(num2);
            result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) - Convert.ToInt32(num2Dec)));

            return result;
        }

        //二进制乘法
        public string BinMultiply(string num1, string num2)
        {
            string result;
            string num1Dec = BinToDec(num1);
            string num2Dec = BinToDec(num2);
            result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) * Convert.ToInt32(num2Dec)));

            return result;
        }

        //二进制除法
        public string BinDivide(string num1, string num2)
        {
            string result;
            string num1Dec = BinToDec(num1);
            string num2Dec = BinToDec(num2);
            result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) / Convert.ToInt32(num2Dec)));

            return result;
        }

        //八进制加法
        public string OctAdd(string num1, string num2)
        {
            string result;
            string num1Dec = OctToDec(num1);
            string num2Dec = OctToDec(num2);
            result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) + Convert.ToInt32(num2Dec)));

            return result;
        }

        //八进制减法
        public string OctSubtract(string num1, string num2)
        {
            string result;
            string num1Dec = OctToDec(num1);
            string num2Dec = OctToDec(num2);
            result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) - Convert.ToInt32(num2Dec)));

            return result;
        }

        //八进制乘法
        public string OctMultiply(string num1, string num2)
        {
            string result;
            string num1Dec = OctToDec(num1);
            string num2Dec = OctToDec(num2);
            result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) * Convert.ToInt32(num2Dec)));

            return result;
        }

        //八进制除法
        public string OctDivide(string num1, string num2)
        {
            string result;
            string num1Dec = OctToDec(num1);
            string num2Dec = OctToDec(num2);
            result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) / Convert.ToInt32(num2Dec)));

            return result;
        }

        //十进制加法
        public string DecAdd(string num1, string num2)
        {
            string result;
            decimal num1Dec = Convert.ToDecimal(num1);
            decimal num2Dec = Convert.ToDecimal(num2);
            result = Convert.ToString(num1Dec + num2Dec);

            return result;
        }

        //十进制减法
        public string DecSubtract(string num1, string num2)
        {
            string result;
            decimal num1Dec = Convert.ToDecimal(num1);
            decimal num2Dec = Convert.ToDecimal(num2);
            result = Convert.ToString(num1Dec - num2Dec);

            return result;
        }

        //十进制乘法
        public string DecMultiply(string num1, string num2)
        {
            string result;
            decimal num1Dec = Convert.ToDecimal(num1);
            decimal num2Dec = Convert.ToDecimal(num2);
            result = Convert.ToString(num1Dec * num2Dec);

            return result;
        }

        //十进制除法
        public string DecDivide(string num1, string num2)
        {
            string result;
            decimal num1Dec = Convert.ToDecimal(num1);
            decimal num2Dec = Convert.ToDecimal(num2);
            result = Convert.ToString(num1Dec / num2Dec);

            return result;
        }
    }
}

完整文件下载地址

计算器

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值