二进制小数 牛客网 程序员面试金典 C++ Python

mac2022-06-30  125

二进制小数 牛客网 程序员面试金典

题目描述

有一个介于0和1之间的实数,类型为double,返回它的二进制表示。如果该数字无法精确地用32位以内的二进制表示,返回“Error”。

给定一个double num,表示0到1的实数,请返回一个string,代表该数的二进制表示或者“Error”。

测试样例:

0.625

返回:0.101

C++

class BinDecimal { public: //run:3ms memory:484k string printBin(double num) { string str("0."); double base = 0.5; for(;num >0; base /=2){ if (num >= base){ num -= base; str += "1"; }else str += "0"; if(str.size() > 32) return str = "Error"; } return str; } //run:3ms memory:476k string printBin2(double num) { string str("0."); double base = 0.5; while(num > 0){ if(num >= base){ num -= base; str += "1"; } else str += "0"; base /= 2; if(str.size() > 32) return str = "Error"; } return str; } };

Python

class BinDecimal: def printBin(self, num): lt = ["0","."] base = 0.5 while num > 0: if num >= base: num -= base; lt.append("1") else: lt.append("0") base /= 2 if len(lt) >=32: return "Error" return ''.join(lt) def printBin2(self, num): if num >= 1 or num <= 0: return "Error" binary = ['0', '.'] while num > 0: if len(binary) >= 32: return "Error" r = num * 2 if r >= 1: binary.append('1') num = r - 1 else: binary.append('0') num = r return ''.join(binary)

 

转载于:https://www.cnblogs.com/vercont/p/10210336.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)