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

本文关键字:十进制 转换 GUI 二进制 | 更新日期: 2023-09-27 18:14:40

如何在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();
        }
    }
}

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

这只是你代码中的一个打字错误:

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

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

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