美文网首页
Swift-浮点数二进制表示

Swift-浮点数二进制表示

作者: FlyElephant | 来源:发表于2017-05-09 18:37 被阅读96次

题目:给定一个介于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

相关文章

  • 深入浅出iOS浮点数精度问题 (上)

    目录 一,浮点数精度丢失? 二,整数的二进制表示 三,浮点数的二进制表示 四,iEEE 754浮点数的手动转换 五...

  • Swift-浮点数二进制表示

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

  • Python避坑:浮点数运算出现不确定尾数

    什么是不确定尾数 我们都知道在计算机中数据由二进制表示,而浮点数则是小数的一种二进制表示方法。 由于浮点数存在精度...

  • [js]数值的精度

    基础知识 js内部所有数字在计算机内存中的表示都是64位双精度浮点数 双精度浮点数表示法的副作用 使用二进制浮点数...

  • 十进制和二进制互相转换

    二进制表示一般用原码表示,计算加减时用补码表示。这里的二进制小数是用的定点数表示,不是用浮点数表示的。 0X01 ...

  • Double类型运算的精度问题

    浮点数值不适用于无法接受舍入误差的计算中。 舍入误差的主要原因在于浮点数值采用二进制系统表示,而二进制系统中无法精...

  • 浮点数运算原理

    据以上分析,IEEE 754标准中定义浮点数的表示范围为: 单精度浮点数二进制:± (2-2^-23) × 212...

  • IEEE-754浮点数表示法

    几乎所有现代编程语言都采用这种二进制浮点表示法。如 JavaScript 但事实上,二进制浮点数表示法并不能精确地...

  • 5分钟讲清楚浮点数的底层表示

    浮点数的二进制表示,基本上就是用二进制的科学计数法来表示。 一个十进制的数0.75,用科学计数法表示是+7.5*1...

  • iOS浮点数精度丢失问题及处理方案

    为什么浮点数精度会丢失 浮点十进制值通常没有完全相同的二进制表示形式。 这是 CPU 所采用的浮点数据表示形式的副...

网友评论

      本文标题:Swift-浮点数二进制表示

      本文链接:https://www.haomeiwen.com/subject/ausitxtx.html