开发者社区 问答 正文

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

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

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

let hexadecimalDouble = 0xC
是可以的。

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

展开
收起
a123456678 2016-07-27 15:01:20 2196 分享
分享
版权
举报
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 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答分类:
问答地址: