开发者社区> 问答> 正文

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

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

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

let hexadecimalDouble = 0xC
是可以的。

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

展开
收起
a123456678 2016-07-27 15:01:20 2108 0
1 条回答
写回答
取消 提交回答
  • // 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的应用实践 立即下载