C# 的double类型的10进制 转化成 字符串的 2进制和16进制的问题

C# 的double类型的10进制 转化成 字符串的 2进制和16进制的问题C# 的浮点数 10进制转化成字符串2进制,怎么都不行。Convert.ToString不可以,只能转化整数,有谁知道其他的方法吗

先转换成字节数组,然后再转成2进制和16进制格式的字符串

double x = 3.14d;

// 先转换为字节数组
byte[] bArray = BitConverter.GetBytes(x);

// 再转换为二进制和十六进制字符串
string sBin = string.Empty;
string sHex = string.Empty;
foreach(byte b in bArray)
{
    sBin += Convert.ToString(b, 2);
    sHex += Convert.ToString(b, 16);
}

追问

用了没成功,得数不对,我是用winForms编写计算器程序

比如说lable1、lable2、lable3,lable1是字符串浮点数,先算出lable1的值,然后再将lable1的值转换成2进 赋值给lable2,让lable2输出

lable3输出16进,将lable1的值转换成16进 赋值给lable3,让lable3输出

用了你的方法,得数不对

😓

追答// label1是你给出的双精度浮点数
double x = double.Parse(label1.Text);

// 先转换为字节数组
byte[] bArray = BitConverter.GetBytes(x);
 
// 再转换为二进制和十六进制字符串
string sBin = string.Empty;
string sHex = string.Empty;
foreach(byte b in bArray)
{
    sBin += Convert.ToString(b, 2);
    sHex += Convert.ToString(b, 16);
}

//lable2显示二进制格式
lable2.Text = sBin;
//lable2显示十六进制格式
lable3.Text = sHex;

追问

又试了一次,得出来数还是不对,出现很多0和1,得数是10.4,二进制栏出现一大堆0和1。不过不用byte数组,用byte可以得出正确的得数,但是是四舍五入后的,不显示小数点后面的数。是不是Convert.ToString不支持小数点以后的数进行二进制转换?

不过还是谢谢你。

温馨提示:答案为网友推荐,仅供参考
相似回答