Python: utilities

 

decimal_to_binary

复制代码
def decimal_to_binary(v: float, precison: int = 6) -> str:
    if v == 0:
        return '0b0'

    binary = ''
    integral = int(v)  # integral part
    mantissa = v - integral  # fractional part

    # conversion of integral part to binary equivalent
    # quotient, modulus = divmod(integral, 2)
    # while quotient:
    #     binary += str(modulus)
    #     quotient, modulus = divmod(quotient, 2)
    # binary += str(modulus)
    while integral:
        binary += str(integral % 2)
        integral //= 2

    binary = binary[::-1] + '.'

    # conversion of fractional part to binary equaivalent
    while precison > 0:
        precison -= 1
        mantissa *= 2
        if mantissa == 1:
            binary += '1'
            rpartition = binary.rpartition('.')
            return '0b' + rpartition[0] + '.' + rpartition[2].ljust(precison, '0')
        elif mantissa > 1:
            binary += '1'
            mantissa -= 1
        else:
            binary += '0'

    return '0b' + binary


print(decimal_to_binary(13.7))
print(decimal_to_binary(8.1))
print(decimal_to_binary(.1))
print(decimal_to_binary(4.))
print(decimal_to_binary(4.5))
复制代码

 

posted @   ascertain  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示