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