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