你能解释一下使用'p‘字符的双十六进制数表示法吗:
0x1.5p10 or 0x1P-1提前谢谢你。
发布于 2012-09-16 00:26:08
这实际上并不是Objective- C所特有的;它是从C继承而来的标准特性。它提供了一种编写浮点数而不进行舍入的方法。它在C标准中有明确的文档记录,但这里有一个快速概述:
十六进制浮点文字的格式为0x[significand]p[exponent],其中[significand]是十六进制数,[exponent]是以10为基数的整数。该数字的值为[significand] x 2^[exponent]。
所以,举个例子:
0x1.5p10 = (1 + 5/16) x 2^10 = 1344.0
0x1p-1 = 1 x 2^-1 = 0.5这些示例并不是特别有趣,因为它们也可以很容易地完全写成十进制浮点文字。随着指数变得更加极端,符号变得更加有趣。例如,考虑最大的有限双精度数:十六进制浮点数中的0x1.fffffffffffffp1023。精确地用十进制写就可以得到:
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0这是相当麻烦的。
https://stackoverflow.com/questions/12439048
复制相似问题