首页 > 试题广场 >

二进制小数

[编程题]二进制小数
  • 热度指数:10726 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

给定一个double num,范围是0到1的实数,若其能用32位以内的二进制表示出来则返回值string为其二进制值,若不能则返回值为“Error”。

测试样例:
0.625
返回:0.101
思路:
小数左移一位,如果实数大于1,说明小数点后一位是1,如果小于1,说明小数点后一位是0
重复这个过程,即可得到实数的二进制表示
# -*- coding:utf-8 -*-
class BinDecimal:
    def printBin(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)

发表于 2016-08-03 20:01:53 回复(0)