码迷,mamicode.com
首页 > 其他好文 > 详细

【字符串】面试题 05.02. 二进制数转字符串

时间:2020-05-04 15:49:35      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:while   back   src   ret   字符   转化   字符串   err   bin   

题目:

技术图片

 

 

 

解答:

根据常规十进制小数转二进制小数的方法进行转化;十进制的小数转换为二进制,主要是小数部分乘以2,取整数部分依次从左往右放在小数点后,直至小数点后为0。

例如:十进制的0.125,要转换为二进制的小数。

(1)0.125 x 2 = 0.25 ==> 0

(2)0.25 x 2 = 0.5 ==> 0

(3)0.5 x 2 = 1 ==> 1,这时小数点后的数均为0,结束循环;

(4)结果为:0.001

技术图片

 

 

 

 1 class Solution {
 2 public:
 3     string printBin(double num) 
 4     {
 5         string res = "0.";
 6 
 7         // 若 "0." 计为两位,i 初始化为 30,若计为 1 位,初始化为 31
 8         int i = 30; 
 9 
10         while (num > 0 && i--) 
11         {
12             num *= 2;
13             if (num >= 1) 
14             {
15                 res.push_back(1);
16                 --num;
17             }
18             else 
19             {
20                 res.push_back(0);
21             }
22         }
23         return num != 0 ? "ERROR" : res;
24     }
25 };

 

【字符串】面试题 05.02. 二进制数转字符串

标签:while   back   src   ret   字符   转化   字符串   err   bin   

原文地址:https://www.cnblogs.com/ocpc/p/12826538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!