C#GUI中二进制分数到十进制的转换

C#GUI中二进制分数到十进制的转换,c#,C#,如何在c#中把二进制分数转换成十进制?1101.101应该是13.625,我得到的是1.25,这太离谱了。当我输入一个分数二进制数时,我似乎会出错,整个二进制数没有问题。如果需要,我可以显示我的代码 代码: double tempans = 0; double answer = 0; string finAns; public Form1() { InitializeComponent();

如何在c#中把二进制分数转换成十进制?1101.101应该是13.625,我得到的是1.25,这太离谱了。当我输入一个分数二进制数时,我似乎会出错,整个二进制数没有问题。如果需要,我可以显示我的代码

代码:

double tempans = 0;
        double answer = 0;
        string finAns;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            string[] temp = new string[5];
            string strHldr = textBox1.Text;
            bool isFractional = strHldr.Contains('.');
            double val1 = 0;
            double val2 = 0;

            if (!isFractional)
                finAns = ComputePart(strHldr);
            else
            {
                string wholeP = WholePart(strHldr);
                string deciP = DecimalPart(strHldr);
                val1 = double.Parse(ComputePart(wholeP));
                val2 = double.Parse(ComputeDeci(deciP));
                finAns = (val2 +  val2).ToString();
            }
            textBox1.Text = finAns;
        }
        private string ComputePart(string strHldr)
        {
            double length1 = strHldr.Length - 1;
            for (int i = 0; i < strHldr.Length; i++)
            {
                if (strHldr[i] == '1')
                {
                    tempans = Math.Pow(2, length1);
                    answer += tempans;
                }
                length1 -= 1;
            }
            length1 = 0;
            return answer.ToString();
        }
        private string ComputeDeci(string number)
        {
            double ans = 0;
            double counter = 1;
            double finalAns = 0;
            for (int i = 0; i < number.Length; i++)
           { 
                ans = counter * 0.5;
                counter = ans;
                if (number[i] == '1')
                {
                    finalAns += counter;
                }
            }
            return finalAns.ToString();
        }
        private string DecimalPart(string number)
        {
            int numCut = number.IndexOf('.');
            return number.Substring(numCut + 1);
        }
        private string WholePart(string number)
        {
            return ((int)Math.Floor(double.Parse(number))).ToString();

        }
    }
}
double tempans=0;
双答案=0;
弦乐终结者;
公共表格1()
{
初始化组件();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
字符串[]临时=新字符串[5];
字符串strHldr=textBox1.Text;
bool isFractional=strHldr.Contains('.');
双值1=0;
双val2=0;
如果(!isFractional)
finAns=计算部分(strHldr);
其他的
{
字符串wholeP=WholePart(strHldr);
字符串deciP=DecimalPart(strHldr);
val1=double.Parse(ComputePart(wholeP));
val2=double.Parse(ComputeDeci(deciP));
finAns=(val2+val2).ToString();
}
textBox1.Text=finAns;
}
私有字符串ComputePart(字符串strHldr)
{
双倍长度1=标准长度-1;
对于(int i=0;i
这只是您代码中的一个输入错误:

finAns = (val2 +  val2).ToString();
应该是

finAns = (val1 +  val2).ToString();

请注意,val2被添加到val2,而不是val1被添加到val2。

显示您的代码。需要,我的错。那是个打字错误。张贴代码,brb。我对它的评论是13.625是没有意义的。对不起,11.625是你想要的答案。这解释了1.25Wow的原因,我检查了2倍多,没有注意到我从中得到了错误。谢谢需要更多地关注阅读我自己的代码。没问题。抱歉,我建议它应该是13.625而不是11.625,我有一个脑屁。不,你真好。:)