This notebook was prepared by Donne Martin. Source and license info is on GitHub.
Complexity:
from __future__ import division
class Bits(object):
MAX_BITS = 32
def print_binary(self, num):
if num is None or num >= 1 or num <= 0:
return 'ERROR'
result = ['0', '.']
fraction = 0.5
while num:
if num >= fraction:
result.append('1')
num -= fraction
else:
result.append('0')
if len(result) > self.MAX_BITS:
return 'ERROR'
fraction /= 2
return ''.join(result)
%%writefile test_print_binary.py
import unittest
class TestBits(unittest.TestCase):
def test_print_binary(self):
bit = Bits()
self.assertEqual(bit.print_binary(None), 'ERROR')
self.assertEqual(bit.print_binary(0), 'ERROR')
self.assertEqual(bit.print_binary(1), 'ERROR')
num = 0.625
expected = '0.101'
self.assertEqual(bit.print_binary(num), expected)
num = 0.987654321
self.assertEqual(bit.print_binary(num), 'ERROR')
print('Success: test_print_binary')
def main():
test = TestBits()
test.test_print_binary()
if __name__ == '__main__':
main()
Overwriting test_print_binary.py
%run -i test_print_binary.py
Success: test_print_binary