posts - 5,  comments - 15,  trackbacks - 0

最新评论

Re:IEEE 754 浮点数的表示精度探讨 请输入您的昵称 2009-11-26 19:25  
刚刚演算了一下,9999999 = (100110001001011001111111)b; 正好24位,这是小数部分能反映的(但是23和22位还有能力反映更大的数)。 float f = 10000000.0; (8位) printf("f = &f\n", f); f = 10000000.000000(能精确表达) 10000000 = (100110001001011010000000)b; 但是8位整数部分再大一些应该就不能精确表达了。 从这个公式来看,一个浮点数是一个乘积的结果-[1+(1-2^23)]×2^127 我同意你的说法,你说的能精确表达完整7位整数是对的。
Re:IEEE 754 浮点数的表示精度探讨 请输入您的昵称 2009-11-26 17:55  
我有一个观点,针对小数经典不够的问题(类似0.1),软件可以人为的在数据最后一位再补5,也就是0.15,这样牺牲一位,但是可以保证数据精度,还原再不把那个尾巴5去掉。 “float是单精度浮点数,最多只能表达7位十进制数“,单精度为什么只能表达7位十进制数, sign(1) + (2^m, m = (7) ) + e(23) ? 难道就是上面那个7 ? 你能再给我们补一课吗?
Re:IEEE 754 浮点数的表示精度探讨 王半仙 2009-11-25 09:48  
float是单精度浮点数,最多只能表达7位十进制数, f = 123456792.000000位数太多了,用double就可以了。
Re:IEEE 754 浮点数的表示精度探讨 请输入您的昵称 2009-11-24 12:41  
小数部分能精确表达这点理解了,希望能再演算一下整数部分能正常表达的为数:比如 float f = 123456789.5; printf("f = &f\n", f); 结果是 f = 123456792.000000,为什么? 难道 123456789 不在[1+(1-2^23)]×2^127 这个范围里面吗?
对这里有异议:
因此,能精确表示的十进制小数的比例是,m越大,比例越小

人家是用24位二进制数表示7位十进制数,所以上面那个比例没有意义吧?
暗暗
好文章,长见识
re: IEEE 754 浮点数的表示精度探讨 木头prayer 2008-06-16 08:59  
很好,很强大,但是不太明白0.1既然不能精确表示,它是如何printf出来的?
非常好
谢谢楼主的分享。。谢谢。。。
写的好
re: IEEE 754 浮点数的表示精度探讨 王半仙 2007-08-06 08:47  
如果要高精度,可以用任意精度算法,高版本的matlab应该是支持的。
如果自己编程,可以考虑用double-double类型,在现有的PC机上精度能达到33位左右。
re: IEEE 754 浮点数的表示精度探讨 anthonyzou 2007-08-05 22:36  
您好,看了关于IEEE 754 浮点数的表示精度探讨,感觉非常好。我刚好遇到了一些问题,不知道能不能从您那里得到些线索。我使用Matlab求解偏微分方程,声学方面的,MATLAB提供的是双精度,有效数字为16位十进制,方程中由于参数有大有小,经常性的出现了大于16位,其中有33位的,因此存在了截断现象,由于方程复杂,很难解决。不知,有没有办法解决?谢谢。
还是看不明白!
我觉得版主有必要提炼成一句话!
但还是谢谢你!
re: Google也会出错! Bear.sTaR{R} 2006-04-30 10:53  
见过几次了,Google对这些小问题不重视,因为它出现的频率不高!!!