如何在c#visualstudio中将带小数点的double转换为二进制

如何在c#visualstudio中将带小数点的double转换为二进制,c#,visual-studio-2010,visual-c++,C#,Visual Studio 2010,Visual C++,我正在visual studio c#中编写一个代码,它将整数从二进制模式转换为十进制模式,并从十进制模式转换为二进制模式,但我希望它将带小数点的数字从十进制模式转换为二进制模式。我如何做到这一点请帮助我,并告诉我必须在代码中添加哪些修改 这是我的计算器代码: using System; using System.Collections.Generic; using System.ComponentModel;

我正在visual studio c#中编写一个代码,它将整数从二进制模式转换为十进制模式,并从十进制模式转换为二进制模式,但我希望它将带小数点的数字从十进制模式转换为二进制模式。我如何做到这一点请帮助我,并告诉我必须在代码中添加哪些修改 这是我的计算器代码:

                    using System;
        using System.Collections.Generic;
        using System.ComponentModel;
        using System.Data;
        using System.Drawing;
        using System.Linq;
        using System.Text;
        using System.Windows.Forms;

        namespace assignment2
        {
            public partial class Form1 : Form
            {
                const int asciiDiff = 48;
                double num1 = 0, num2 = 0, result = 0;
                double fact = 1;
                int[] iHexaNumeric = new int[] { 10, 11, 12, 13, 14, 15 };
                char[] cHexa = new char[] { 'A', 'B', 'C', 'D', 'E', 'F' };
                String a = "";
                char op;
                bool b = false;
                const int base10 = 10;
                public Form1()
                {
                  // 

                    InitializeComponent();
                }

                private void textBox1_TextChanged(object sender, EventArgs e)
                {

                }

                private void button1_Click(object sender, EventArgs e)
                {
                    a = DisplayResult.Text.ToString();

                    DisplayResult.Text = a + "1";
                }

                private void buttonTow_Click(object sender, EventArgs e)
                {
                    a = DisplayResult.Text.ToString();

                    DisplayResult.Text = a + "2";
                }

                private void buttonThree_Click(object sender, EventArgs e)
                {
                    a = DisplayResult.Text.ToString();

                    DisplayResult.Text = a + "3";
                }

                private void buttonFour_Click(object sender, EventArgs e)
                {
                    a = DisplayResult.Text.ToString();

                    DisplayResult.Text = a + "4";
                }

                private void buttonFive_Click(object sender, EventArgs e)
                {
                    a = DisplayResult.Text.ToString();

                    DisplayResult.Text = a + "5";
                }

                private void buttonSix_Click(object sender, EventArgs e)
                {
                    a = DisplayResult.Text.ToString();

                    DisplayResult.Text = a + "6";
                }

                private void buttonSeven_Click(object sender, EventArgs e)
                {
                    a = DisplayResult.Text.ToString();

                    DisplayResult.Text = a + "7";
                }

                private void buttonEight_Click(object sender, EventArgs e)
                {
                    a = DisplayResult.Text.ToString();

                    DisplayResult.Text = a + "8";
                }

                private void buttonNine_Click(object sender, EventArgs e)
                {
                    a = DisplayResult.Text.ToString();

                    DisplayResult.Text = a + "9";
                }

                private void buttonZero_Click(object sender, EventArgs e)
                {
                    a = DisplayResult.Text.ToString();

                    DisplayResult.Text = a + "0";
                }

                private void buttonPlus_Click(object sender, EventArgs e)
                {
                    num1 = Convert.ToDouble(DisplayResult.Text.ToString());
                    op = '+';
                    DisplayResult.Text = string.Empty;
                }

                private void buttonMinus_Click(object sender, EventArgs e)
                {
                    num1 = Convert.ToDouble(DisplayResult.Text.ToString());
                    op = '-';
                    DisplayResult.Text = string.Empty;
                }

                private void buttonMultipler_Click(object sender, EventArgs e)
                {
                    num1 = Convert.ToDouble(DisplayResult.Text.ToString());
                    op = '*';
                    DisplayResult.Text = string.Empty;
                }

                private void buttonDivider_Click(object sender, EventArgs e)
                {
                    num1 = Convert.ToDouble(DisplayResult.Text.ToString());
                    op = '/';
                    DisplayResult.Text = string.Empty;
                }




                private void buttonEqual_Click(object sender, EventArgs e)
                {
                    if (DisplayResult.Text == "")
                        return;
                    else
                    {

                        try
                        {

                            num2 = Convert.ToDouble(DisplayResult.Text.ToString());
                            switch (op)
                            {
                                case '+': //suma
                                    result = (num1 + num2);
                                    DisplayResult.Text = result.ToString();
                                    break;


                                case '-': //resta
                                    result = (num1 - num2);
                                    DisplayResult.Text = result.ToString();
                                    break;

                                case '*': //multiply
                                    result = (num1 * num2);
                                    DisplayResult.Text = result.ToString();
                                    break;

                                case '/': //division
                                    if (num2 != 0)
                                    {
                                        result = (num1 / num2);
                                        DisplayResult.Text = result.ToString();

                                    }
                                    else
                                    {
                                        DisplayResult.Text = "Can't divide by 0";
                                    }
                                    break;
                            }

                        }

                        catch (Exception ex)
                        {
                            MessageBox.Show("Unexpected error occured. Details: " +
                                ex.Message);
                        }
                    }
                }
                private void buttonBackSpace_Click(object sender, EventArgs e)
                {
                    try
                    {

                        String Value = DisplayResult.Text.ToString();
                        int temp = Value.Length;
                        if (temp == 1)
                            DisplayResult.Text = String.Empty;
                        else
                        {
                            DisplayResult.Text = DisplayResult.Text.Substring(0, temp - 1);
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Unexpected error in buttonBackSpace occured. Details: " +
                            ex.Message);
                    } 
                }

                private void buttonClear_Click(object sender, EventArgs e)
                {
                    DisplayResult.Text = String.Empty;
                }
                private void buttonDecimal_Click(object sender, EventArgs e)
                {

                    if (DisplayResult.Text.Contains("."))
                    {
                        return;
                    }

                    DisplayResult.Text += ".";


                }

                private void DecimalRadioButton_CheckedChanged(object sender, EventArgs e)
                {
                    if (DecimalRadioButton.Checked == true)
                    {
                        DisplayResult.Text= BaseToDecimal(DisplayResult.Text.ToString(), 2).ToString();

                    }
                    buttonTow.Enabled = true;
                    buttonThree.Enabled = true;
                    buttonFour.Enabled = true;
                    buttonFive.Enabled = true;
                    buttonSix.Enabled = true;
                    buttonSeven.Enabled = true;
                    buttonEight.Enabled = true;
                    buttonNine.Enabled = true;

                }

                private void BinaryRadioButton_CheckedChanged(object sender, EventArgs e)
                {
                    if (BinaryRadioButton.Checked == true)
                    {

                        DisplayResult.Text = DecimalToBase(Convert.ToInt16(DisplayResult.Text.ToString()), 2);

                        buttonTow.Enabled = false;
                        buttonThree.Enabled = false;
                        buttonFour.Enabled = false;
                        buttonFive.Enabled = false;
                        buttonSix.Enabled = false;
                        buttonSeven.Enabled = false;
                        buttonEight.Enabled = false;
                        buttonNine.Enabled = false;
                    }




                }




                string DecimalToBase(int iDec, int numbase)
                {
                    string strBin = "";
                    int[] result = new int[32];
                    int MaxBit = 32;
                    for (; iDec > 0; iDec /= numbase)
                    {
                        int rem = iDec % numbase;
                        result[--MaxBit] = rem;
                    }
                    for (int i = 0; i < result.Length; i++)
                        if ((int)result.GetValue(i) >= base10)
                            strBin += cHexa[(int)result.GetValue(i) % base10];
                        else
                            strBin += result.GetValue(i);
                    strBin = strBin.TrimStart(new char[] { '0' });
                    return strBin;
                }

                int BaseToDecimal(string sBase, int numbase)
                {

                    int dec = 0;
                    int b;
                    int iProduct = 1;
                    string sHexa = "";
                    if (numbase > base10)
                        for (int i = 0; i < cHexa.Length; i++)
                            sHexa += cHexa.GetValue(i).ToString();
                    for (int i = sBase.Length - 1; i >= 0; i--, iProduct *= numbase)
                    {
                        string sValue = sBase[i].ToString();
                        if (sValue.IndexOfAny(cHexa) >= 0)
                            b = iHexaNumeric[sHexa.IndexOf(sBase[i])];
                        else
                            b = (int)sBase[i] - asciiDiff;
                        dec += (b * iProduct);
                    }
                    return dec;
                }
            }
        }
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Windows.Forms;
名称空间分配2
{
公共部分类Form1:Form
{
常数int ASCIIDIF=48;
双num1=0,num2=0,结果=0;
双重事实=1;
int[]iHexaNumeric=新的int[]{10,11,12,13,14,15};
char[]cHexa=新字符[]{'A','B','C','D','E','F'};
字符串a=“”;
char op;
布尔b=假;
常量int base10=10;
公共表格1()
{
// 
初始化组件();
}
私有void textBox1\u TextChanged(对象发送方,事件参数e)
{
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
a=DisplayResult.Text.ToString();
DisplayResult.Text=a+“1”;
}
私有无效按钮单击(对象发送者,事件参数e)
{
a=DisplayResult.Text.ToString();
DisplayResult.Text=a+“2”;
}
私有无效按钮三次单击(对象发送者,事件参数e)
{
a=DisplayResult.Text.ToString();
DisplayResult.Text=a+“3”;
}
私有无效按钮四次单击(对象发送者,事件参数e)
{
a=DisplayResult.Text.ToString();
DisplayResult.Text=a+“4”;
}
私有无效按钮五次单击(对象发送者,事件参数e)
{
a=DisplayResult.Text.ToString();
DisplayResult.Text=a+“5”;
}
私有无效按钮单击(对象发送者,事件参数e)
{
a=DisplayResult.Text.ToString();
DisplayResult.Text=a+“6”;
}
私有无效按钮七次单击(对象发送者,事件参数e)
{
a=DisplayResult.Text.ToString();
DisplayResult.Text=a+“7”;
}
私有无效按钮右键单击(对象发送者,事件参数e)
{
a=DisplayResult.Text.ToString();
DisplayResult.Text=a+“8”;
}
私有无效按钮单击(对象发送者,事件参数e)
{
a=DisplayResult.Text.ToString();
DisplayResult.Text=a+“9”;
}
私有无效按钮单击(对象发送者,事件参数e)
{
a=DisplayResult.Text.ToString();
DisplayResult.Text=a+“0”;
}
私有无效按钮单击(对象发送者,事件参数e)
{
num1=Convert.ToDouble(DisplayResult.Text.ToString());
op='+';
DisplayResult.Text=string.Empty;
}
私有无效按钮分钟单击(对象发送者,事件参数e)
{
num1=Convert.ToDouble(DisplayResult.Text.ToString());
op='-';
DisplayResult.Text=string.Empty;
}
私有无效按钮多重单击(对象发送者,事件参数e)
{
num1=Convert.ToDouble(DisplayResult.Text.ToString());
op='*';
DisplayResult.Text=string.Empty;
}
私有无效按钮视窗单击(对象发送者,事件参数e)
{
num1=Convert.ToDouble(DisplayResult.Text.ToString());
op='/';
DisplayResult.Text=string.Empty;
}
私有无效按钮相等单击(对象发送者,事件参数e)
{
如果(DisplayResult.Text==“”)
返回;
其他的
{
尝试
{
num2=Convert.ToDouble(DisplayResult.Text.ToString());
开关(op)
{
大小写“+”://suma
结果=(num1+num2);
DisplayResult.Text=result.ToString();
打破
案例'-'://resta
结果=(num1-num2);
DisplayResult.Text=result.ToString();
打破
大小写“*”://乘法
结果=(num1*num2);
DisplayResult.Text=result.ToString();
打破
案例“/”://除法
如果(num2!=0)
{
结果=(num1/num2);