我不明白浮点数是如何用Swift中的十六进制表示法表示的.Apple的文档显示0xC.3p0等于十进制的12.1875.有人可以告诉我如何进行转换吗?我明白在十进制十六进制值0xC = 12之前.小数点后的3p0是我难倒的地方.
Mar*_*n R 10
从文档:
浮点 文字
...
十六进制浮点文字由0x前缀组成,后跟可选的十六进制小数,后跟十六进制指数.十六进制小数由小数点后跟一系列十六进制数字组成.指数由一个大写或小写的p前缀后跟一个十进制数字序列组成,这些十进制数字表示p之前的值乘以2的2的幂.例如,0xFp2表示15×2 2,其评估为60.类似地,0xFp-2表示15×2 -2,其评估为3.75.
在你的情况下
0xC.3p0 = (12 + 3/16) * 2^0 = 12.1875
另一个例子:
0xAB.CDp4 = (10*16 + 11 + 12/16 + 13/16^2) * 2^4 = 2748.8125
此格式与%aprintf 格式非常相似(请参阅
http://pubs.opengroup.org/onlinepubs/009695399/functions/fprintf.html).它可用于直接在其二进制IEEE 754表示中指定浮点数,请参阅为什么Swift使用基数2作为十六进制浮点值的指数?
欲获得更多信息.
0xC.3p0使用位值系统解释:
C (or 12) is in the 16^0 place
3 is in the 16^-1 place (and 3/16 == 0.1875)
p says the exponent follows (like the e in 6.022e23 in base 10)
0 is the exponent (in base 10) that is the power of 2 (2^0 == 1)
Run Code Online (Sandbox Code Playgroud)
所以把它们放在一起
0xC.3p0 = (12 + (3/16)) * 2^0 = 12.1875
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1778 次 |
| 最近记录: |