专栏
标签
Syslab如何将小数转为二进制?
技术分享
发布于 2025-08-06 16:35:22
查看 1过去300天

定义一个将十进制数(整数或小数)转换为二进制表示的函数,整数部分采用除2取余法,小数部分采用乘2取整法,最后组合结果输出。

function decimal_to_binary(number::Real)
    # 将输入转换为 Float64 以处理整数和小数
    number = Float64(number)
    # 分离整数部分和小数部分
    integer_part = floor(number)
    fractional_part = number - integer_part
    # 整数部分转二进制
    integer_binary = string(Integer(integer_part), base = 2)
    # 检查是否存在小数部分
    if fractional_part == 0.0
        return integer_binary
    end
    # 小数部分转二进制
    fractional_binary = ""
    while fractional_part > 0 && length(fractional_binary) < 32
        fractional_part *= 2
        bit = floor(Int, fractional_part)
        fractional_binary = string(bit) * fractional_binary
        fractional_part -= bit
    end
    # 组合结果
    if length(fractional_binary) == 0
        return integer_binary
    else
        return "$(integer_binary).$(fractional_binary)"
    end
end

# 测试示例
number = 12.625
binary = decimal_to_binary(number)
println("十进制数 $(number) 转换为二进制为: $(binary)")

number = 12
binary = decimal_to_binary(number)
println("十进制数 $(number) 转换为二进制为: $(binary)")

image.png

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境
科学计算

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天