Re: [心得] 寫程式時,不可偷懶呀!!!
※ 引述《Arshain (ㄚ軒)》之銘言:
: 我是懶人
: 故我在寫 fac e e^x那題時
: 直接設一個 unsigned long fac(int y)
: 用這個去跑階層.....
: (這樣到20!都可以用"非科學計號"表示)
: 但當用fac()去做e 和e^x時
: 就導致"因為long在分母,所以正小數變小有一定的線制"
: 換句話說 1/(20!) 應該是4.1 x 10^(-19)
: 但因為偷懶,變成了1/(20!) 只有約10^(-10).....
: 所以5^20/20! 就一定會爆表(大很多 ><)
: 故數據就會不正常....
: --------------------------------------------------------------------
這一個演算法好像會涉及到大數相除的問題
在越後面會越不準確
我有一個新的想法
請大家參考看看
//calculate e^x
double x,an,sum;
cin>>x;
an=1;
sum=1;
for (int i=1;i<=100;i++){
an*=(x/i); //由前一項推得 不會涉及大數相除
sum+=an;
}
cout<<sum;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.241.63
推
10/25 23:23, , 1F
10/25 23:23, 1F
→
10/25 23:24, , 2F
10/25 23:24, 2F
推
10/25 23:29, , 3F
10/25 23:29, 3F
推
10/25 23:33, , 4F
10/25 23:33, 4F
→
10/25 23:35, , 5F
10/25 23:35, 5F
推
10/25 23:44, , 6F
10/25 23:44, 6F
推
10/26 00:20, , 7F
10/26 00:20, 7F
→
10/26 14:53, , 8F
10/26 14:53, 8F
推
10/26 18:37, , 9F
10/26 18:37, 9F
推
10/26 22:23, , 10F
10/26 22:23, 10F
推
10/27 02:05, , 11F
10/27 02:05, 11F
推
10/27 16:59, , 12F
10/27 16:59, 12F
→
10/27 16:59, , 13F
10/27 16:59, 13F
推
10/28 01:33, , 14F
10/28 01:33, 14F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):