24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1001  |  回复: 10

lsw0412ok

银虫 (小有名气)

[求助] 大数的计算已有3人参与

在fortran计算中,需要计算几个10**100+的数的运算,

发自小木虫IOS客户端
回复此楼
Lisw
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lsw0412ok

银虫 (小有名气)

接上文。。。。
几个大数的计算会导致结果超出10**302,引起结果不稳定。所以问题是怎么能得到这种情况下的准确解。

发自小木虫IOS客户端
Lisw
2楼2016-02-04 21:21:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

一终子

金虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
用 Real(16) 形式的计算。
3楼2016-02-05 12:59:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lsw0412ok

银虫 (小有名气)

引用回帖:
3楼: Originally posted by 一终子 at 2016-02-05 12:59:36
用 Real(16) 形式的计算。

real16的结果能好一些,但还是不稳定。也超出16能表示的数范围了。

发自小木虫IOS客户端
Lisw
4楼2016-02-06 13:17:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

一终子

金虫 (正式写手)

引用回帖:
4楼: Originally posted by lsw0412ok at 2016-02-06 13:17:02
real16的结果能好一些,但还是不稳定。也超出16能表示的数范围了。
...

那你计算的数还真大!
真不行的话,你可以自定义数据类型。

发自小木虫IOS客户端
5楼2016-02-06 14:33:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lsw0412ok

银虫 (小有名气)

引用回帖:
5楼: Originally posted by 一终子 at 2016-02-06 14:33:03
那你计算的数还真大!
真不行的话,你可以自定义数据类型。
...

举个栗子

发自小木虫IOS客户端
Lisw
6楼2016-02-06 16:04:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

引用回帖:
6楼: Originally posted by lsw0412ok at 2016-02-06 16:04:10
举个栗子
...

最好稍微描述一下你要解决的问题

发自小木虫IOS客户端
7楼2016-02-07 08:43:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lsw0412ok

银虫 (小有名气)

引用回帖:
7楼: Originally posted by virtualzx at 2016-02-07 08:43:56
最好稍微描述一下你要解决的问题
...

新年快乐

发自小木虫IOS客户端
Lisw
8楼2016-02-08 11:20:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wo2cast

木虫 (著名写手)

【答案】应助回帖

超出编程语言的数据类型范围,参考数据结构相关书籍。举例:3位数与3位数相乘,定义两个大小为3的数组,保存要相乘的两个数的每一位,逐位相乘,结果保存在第三个数组,进位保存第四个数组,综合第三个数组和进位数组的情况,计算最终结果于第五个数组即为所求。
具体例子可以参考poj第二或第三题,高精度计算。

[ 发自手机版 http://muchong.com/3g ]
'“万事开头难”“之后呢?”“之后你就习惯了”
9楼2016-02-09 17:52:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiangxingge

金虫 (正式写手)

【答案】应助回帖

如果只是单纯数字大,而有效位数不多,那么在计算过程中 就先换个单位,比如 以 10**100 作为 1,计算结束后再换回来。
如果是有效位数需要 保留 很多,那么就需要 按照 9楼的建议,用数组代表一个高精度数来计算。这个有专门的说法。
或许你要把上述2点要结合起来一起,才解决问题。
10楼2016-02-19 16:41:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lsw0412ok 的主题更新
信息提示
请填处理意见