猿问

可以存储在双倍中的最大整数

可以存储在双倍中的最大整数

什么是最大的“无浮点”整数,可以存储在IEEE 754双类型而不失去精度?



狐的传说
浏览 554回答 3
3回答

慕妹3146593

最大/最大的整数,可以存储在一个双,而不失去精度是相同的,最大可能的值一倍。那是,DBL_MAX约1.8×10308(如果您的Double是IEEE 754 64位双)。是个整数。完全代表了。你还想要什么?继续,问我最大的整数是多少?和所有较小的整数可以存储在IEEE 64位双倍,而不会失去精度。ieee 64位双机有52位尾数,所以我认为它是2位。53:253+1不能存储,因为开头的1和结尾的1之间有太多的零。少于253可以存储,其中52位显式地存储在尾数中,然后指数实际上给出了另一位。253显然可以存储,因为它的功率很小,只有2。或者另一种看待它的方法:一旦将偏差从指数中取下来,而忽略了符号位与问题无关,由双倍存储的值等于2的幂,再加上一个52位整数乘以2。指数−52..因此,使用指数52,您可以存储来自2的所有值。52通至253−1.然后用指数53,你可以在2之后存储下一个数字。53是253 + 1 × 253−52..因此,精度损失首先发生在2。53 + 1.

慕桂英546537

9007199254740992(即9,007,199,254,740,992),没有任何保障:程序#include&nbsp;<math.h> #include&nbsp;<stdio.h> int&nbsp;main(void)&nbsp;{ &nbsp;&nbsp;double&nbsp;dbl&nbsp;=&nbsp;0;&nbsp;/*&nbsp;I&nbsp;started&nbsp;with&nbsp;9007199254000000,&nbsp;a&nbsp;little&nbsp;less&nbsp;than&nbsp;2^53&nbsp;*/ &nbsp;&nbsp;while&nbsp;(dbl&nbsp;+&nbsp;1&nbsp;!=&nbsp;dbl)&nbsp;dbl++; &nbsp;&nbsp;printf("%.0f\n",&nbsp;dbl&nbsp;-&nbsp;1); &nbsp;&nbsp;printf("%.0f\n",&nbsp;dbl); &nbsp;&nbsp;printf("%.0f\n",&nbsp;dbl&nbsp;+&nbsp;1); &nbsp;&nbsp;return&nbsp;0; }结果9007199254740991 9007199254740992 9007199254740992
随时随地看视频慕课网APP
我要回答