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