BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #74897同步于 2013/10/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

366^23可以用double存么?

spicewolf
2013/10/30镜像同步9 回复
366的23次方哈。 我存了,但是貌似不对,是91214727297716717000000000000000000000000000000000000000000.000000。用计算器一摁就知道这是不对的哈。 为什么呢?怎么搞?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
nuanyangyang机器人#1 · 2013/10/30
IEEE754 double-precision binary floating-point format (简称double)只有53位二进制有效数字,大约合15位十进制数。显然不足以储存366的23次方。 说到解决方案,必须问问具体是什么应用呢?
spicewolf机器人#2 · 2013/10/30
没什么大不了的,我只是做一个很小的程序,我想着double能存很大的数,想试试,结果不行。 你觉得用java可以么? 【 在 nuanyangyang 的大作中提到: 】 : IEEE754 double-precision binary floating-point format (简称double)只有53位二进制有效数字,大约合15位十进制数。显然不足以储存366的23次方。 : 说到解决方案,必须问问具体是什么应用呢?
nuanyangyang机器人#3 · 2013/10/30
用Python吧,整数本来就是任意精度的。 用Java可以。Java的BigInteger可以满足你的要求。 用C或者C++的话,用GnuMP也可以。 【 在 spicewolf 的大作中提到: 】 : 没什么大不了的,我只是做一个很小的程序,我想着double能存很大的数,想试试,结果不行。 : 你觉得用java可以么? :
spicewolf机器人#4 · 2013/10/30
那我试试最后一个。谢谢你哈
spicewolf机器人#5 · 2013/10/30
我跟你讨论讨论这个问题哈,虽然double只有53位有效数字,但是它不是还有11位阶码么?我看网上说double可以表示10^308呢。。我搞不懂它说的是什么意思 【 在 nuanyangyang 的大作中提到: 】 : IEEE754 double-precision binary floating-point format (简称double)只有53位二进制有效数字,大约合15位十进制数。显然不足以储存366的23次方。 : 说到解决方案,必须问问具体是什么应用呢?
nuanyangyang机器人#6 · 2013/10/30
【 在 spicewolf 的大作中提到: 】 : 我跟你讨论讨论这个问题哈,虽然double只有53位有效数字,但是它不是还有11位阶码么?我看网上说double可以表示10^308呢。。我搞不懂它说的是什么意思 : 11位阶码怎么了?不改变它只有53个二进制有效数字的事实啊。 (1.23456789012345e308)确实是10^308的数量级,也只有15位十进制有效数字。但是(1.23456789012345678e308)就表示不出来了,没那么精确。
spicewolf机器人#7 · 2013/10/30
哦,我懂了。我都说了讨论讨论嘛。我是来请教的,嘿嘿。 【 在 nuanyangyang 的大作中提到: 】 : : 11位阶码怎么了?不改变它只有53个二进制有效数字的事实啊。 : (1.23456789012345e308)确实是10^308的数量级,也只有15位十进制有效数字。但是(1.23456789012345678e308)就表示不出来了,没那么精确。
spicewolf机器人#8 · 2013/10/31
谢谢你哈。gmp还不错哦。 【 在 nuanyangyang 的大作中提到: 】 : : 11位阶码怎么了?不改变它只有53个二进制有效数字的事实啊。 : (1.23456789012345e308)确实是10^308的数量级,也只有15位十进制有效数字。但是(1.23456789012345678e308)就表示不出来了,没那么精确。
spicewolf机器人#9 · 2013/10/31
大牛,今天又空么? 先讲讲我成功的例子,我装了mingw以后,发现它有libgmp的库,于是安装了,得到了libgmp.dll.a和libgmpxx.dll.a,然后我在程序里面导入了libgmp.dll.a,OK,程序运行成功。 然后,我蛋疼地从官网下了个gnu mp,按照教程编译安装,生成了6个东西,libgmp.a, libgmp.la,libgmpxx.a, libgmpxx.la 和gmp.h, gmpxx.h,我在程序里面添加了libgmp.a这个静态库,但是为什么编译不过呢? 【 在 nuanyangyang 的大作中提到: 】 : : 11位阶码怎么了?不改变它只有53个二进制有效数字的事实啊。 : (1.23456789012345e308)确实是10^308的数量级,也只有15位十进制有效数字。但是(1.23456789012345678e308)就表示不出来了,没那么精确。