为什么IEEE754单精度浮点数只有7位精度?为什么单精度浮点数有7位精度(或15-16位精度)?谁能根据分配给浮点数的32位(符号(32)指数(30-23),分数(22-0))解释我们是如何到达那里的?有效数的23个小数位(22-0)出现在内存格式中,但总精度实际上是24位,因为我们假设存在前导1。这相当于log10(2^24)≈7.225个十进制数字。双精度浮点数有52位,加上前导1是53。所以双精度log10(2^53)≈15.955数字可以保留为log10(2^53)≈15.955十进制数,而不是16。注意:前导1不是符号位。它实际上是(-1)^sign*1.ffffffff*2^(eeee-constant)但我们不需要在分数中存储前导1。符号位还是要存的有些数不能表示为2的幂和,比如1/9:>>>>doubled=0.111111111111111;>>>>System.out.println(d+"n"+d*10);0.1111111111111111.111111111111098如果财务计划重复进行此计算而不进行自我更正,最终会出现差异。>>>>双d=0.111111111111111;>>>>双和=0;>>>>for(inti=0;i<1000000000;i++){sum+=d;}>>>>System.out.println(sum);111111108.91914201在10亿次之后,我们损失了超过2美元。以上是C#学习教程:为什么IEEE754单精度浮点数只有7位精度?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
