2012-09-15 61 views

回答

4

这其实并不特定于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 

这是相当繁琐。

+0

谢谢史蒂芬:) – StKiller