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();
}
}
}
这只是你代码中的一个打字错误:
finAns = (val2 + val2).ToString();
应该finAns = (val1 + val2).ToString();
注意,val2被添加到val2中,而不是val1被添加到val2中。