Objective-C中double的范围是多少?

tom*_*rts 3 objective-c

我有一个计算距离很远的程序.然后我使用stringfromnumber转换距离(双倍)以插入逗号(即1,234,567).只要距离低于2,000,000,000,这种方法就可以正常工作.每当我超过20亿时,我得到的负数也不是正确的距离.通过查看帮助,我似乎完全在双倍的范围内.有任何想法吗?

the*_*aws 8

你可以检查你自己float.hDBL_MAX找出来.我的价值是1.797693e + 308来自:

#include <stdio.h>
#include <float.h>

int main ( void ) {
    printf("Max double %e \n", DBL_MAX);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)


Sky*_*leh 5

双重可以容纳从无穷大到负无穷大的任何东西.但它只能准确地保持15位数.另外,请记住,如果将其转换为int并且double存储大于2,147,483,648的内容,则int将溢出为负数.

  • 从无穷大到负无穷大并不是一个很好的描述,因为无限的定义在物理上是不可能的.双精度的最大指数为1023,最小值为-1022,因此它可以表示从2 ^ -1022到2 ^ 1023的范围,最多15位数,以及±无穷大和NaN. (7认同)