您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页Swift-浮点数二进制表示

Swift-浮点数二进制表示

来源:伴沃教育

题目:给定一个介于0和1之间的实数,类型为double,打印它的二进制表示。如果该数字无法精准地用32位以内的二进制表示,则打印“ERROR”.

解法一

数字乘以2,不断将数据不断向左移动,与1比较

核心代码:
<pre><code>` func printBinary(num:Float) -> String {
if num >= 1 && num <= 0 {
return "ERROR"
}

    var number:Float = num
    var binaryString:String = "."
    
    while number > 0 {
        
        if binaryString.characters.count >= 32 {
            return "ERROR"
        }
        
        let temp:Float = number * 2
        
        if temp >= 1 {
            binaryString.append("1")
            number = temp - 1
        } else {
            binaryString.append("0")
            number = temp
        }
    }
    
    return binaryString
}`</code></pre>

解法二

从前到后,不断更新系数除以2

核心代码:
<pre><code>` func printBinary2(num:Float) -> String {

    if num >= 1 && num <= 0 {
        return "ERROR"
    }
    
    var number:Float = num
    var binaryString:String = "."
    var factor:Float = 0.5
    
    while number > 0 {
        if binaryString.characters.count >= 32 {
            return "ERROR"
        }
        
        if number >= factor {
            binaryString.append("1")
            number -= factor
        } else {
            binaryString.append("0")
        }
        
        factor /= 2
        
    }
    
    return binaryString
}`</code></pre>

测试代码:
<pre><code>var bitBinary:String = bitManager.printBinary(num: 0.625) var bitBinary2:String = bitManager.printBinary2(num: 0.625) print("FlyElephant--二进制的表现形式:\(bitBinary)---\(bitBinary2)")</code></pre>

FlyElephant.png

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务