swift定义十六进制数据包含小数部分的时候指数部分不可缺少吗?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

swift定义十六进制数据包含小数部分的时候指数部分不可缺少吗?

let hexadecimalDouble = 0xC.3p0
这里不能定义成

let hexadecimalDouble = 0xC.3
但是如果没有小数部分,如

let hexadecimalDouble = 0xC
是可以的。

这是编译器的疏漏还是语言的特殊设定,如果是后者的话为什么这样?

展开
收起
a123456678 2016-07-27 15:01:20 1861 0
1 条回答
写回答
取消 提交回答
  • a123456678
    // All of these floating-point literals have a decimal value of 12.1875:
    let decimalDouble = 12.1875
    let exponentDouble = 1.21875e1
    let hexadecimalDouble = 0xC.3p0
    
    /*
    * explain why hexadecimalDouble = 0xC.3p0 equal 12.1875
    * 解释为什么 hexadecimalDouble = 0xC.3p0 等于 12.1875
    * 将其转换为16进制
    
             0x         C .    3  p0  = 0xCp0 + 0x3p-4 = 12 + 3*(1/16)
        0xC.3 = 0000 0110 . 0011
    
    // example:
    var hexadecimalDoubleTest = 0x0.33p0   
    // 0x0.33p0 = 0x3p-4 + 0x3p-8 = 3*(1/16)+3*(1/256) = 0.19921875
    */
    2019-07-17 20:00:36
    赞同 展开评论 打赏
问答分类:
问答标签:
相关产品:
问答排行榜
最热
最新
相关电子书
更多
OpenStack Swift 海量小文件性能优化之路
立即下载
From Java_Android to Swift iOS
立即下载
Swift在Airbnb的应用实践
立即下载