日期:2014-05-17  浏览次数:20906 次

小龙年第一次提问C#
开年了要工作了,在做面试题,有个题目不懂,怎么不通过系统函数把数字转换成二进制?要支持小数的,谁有代码分享下?谢谢!新年快乐!!!

------解决方案--------------------
月经题,参考:http://bbs.csdn.net/topics/390346850

double d = 123.456;
string bin = "";
int d1 = (int)d;
while (d1 > 0)
{
    bin = (d1 % 2 == 1 ? "1" : "0") + bin;
    d1 = d1 / 2;
}
double d2 = d - (int)d;
bin = bin + ".";
double x = 0.5;
for (int i = 0; i < 10; i++) // 计算到小数点后10位。
{
    bin = bin + (d2 >= x ? "1" : "0");
    if (d2 >= x)
        d2 = d2 - x;
    x = x / 2.0;
}
Console.WriteLine(bin);