#include <iomanip>
using std::setiosflags;
using std::setprecision;
#include <cmath>
void main(){
double result; //e之估計值
double j;
cout<<setprecision(8);
cout<<"e=(1+h)^1/h"<<endl;
for(j=0.01;j>0.0000001;j=j*0.1){
cout<<"h="<<j<<" e="<<result<<endl;
result=pow(1+j,(1/j));
}
}
這是求e的近似值的問題~
但我執行後
e=(1+h)^1/h
h=0.01 e=-9.2559631e+061
h=0.001 e=2.7048138
h=0.0001 e=2.7169239
h=1e-005 e=2.7181459
h=1e-006 e=2.7182682
h=1e-007 e=2.7182805 ------>該怎麼做才會顯示0.0000001?
Press any key to continue
麻煩高手解答 謝謝唷
--
[1;33m∣ ▲ ∣ [33;41m夢之園地 [m [1;33m:虎尾科技大學計中尋夢園 [m
[1;31m╭—╮├—╮ —┼— [33;41m尋夢位址 [m [1;33m: [36mbbs.nhit.edu.tw [37m〔 [31m140.130.4.104 [37m〕 [m
[1;34m∣ ∣∣ ∣ ∣ ∣ [33;41m夢者來源 [m [1;33m: [30mp28-130.nhit.edu.tw [m
[1;32m∣ ∣∣ ∣ ∣ ∣ 今夜睡不著覺,只有到 [31m尋 [36m夢 [33m園 [32m找尋另一個夢境。 [35m∣ [m
[1;35m┴ ┴┴ ┴ ┴ ╰═══════════════════════╯ [m
char Buffer[1024];
memset( Buffer,0,sizeof( Buffer ) );
sprintf( Buffer,_T("%2.10f"),0.000001 );
cout << (LPCTSTR)Buffer << endl;
這樣子呢?
還是要寫個class來處理這項功能。
--
* Post by XWLin from sw68-238-94.adsl.seed.net.tw
memset是啥啊...我看不懂耶...
我好像太龜毛了>.<
下面是修改後的程式:
#include <iostream>
#include <iomanip>
#include <cmath>
/* 下面這行指令代表你在程式中可以直接寫出像 cout 這樣的指令, 而不須寫成
std::cout 這樣的型式, 也就是名稱空間的使用方法. */
using namespace std;
int main(){
double result; //e之估計值.
double j;
/* 下面這行指令會在顯示浮點數時, 強迫顯示小數點後的數字, 預設會
顯示小數點後6位數字, 你若想要調整顯示的位數時, 必須在後面指令
中搭配 setprecision(n) 這個指令, 括號中的 n 代表你要顯示小數點
後的 n 個位數. */
cout<<setiosflags(ios::fixed);
int p = 2;
cout<<"e=(1+h)^1/h"<<endl;
for(j=0.01;j>0.0000001;j=j*0.1){
//下面的 p++ 表示每執行完一次 setprecision , p 的值會加一.
cout<<"h="<<setprecision(p++)<<j<<" e="<<result<<endl;
result=pow(1+j,(1/j));
}
}
下面是執行結果:
e=(1+h)^1/h
h=0.01 e=2.16
h=0.001 e=2.705
h=0.0001 e=2.7169
h=0.00001 e=2.71815
h=0.000001 e=2.718268
h=0.0000001 e=2.7182805
--
[1;32m※ Origin: [33mSayYA 資訊站 [37m<bbs.sayya.org> [m
[1;31m◆ From: [36mtelnet.hinet.net [m
[1;33m◆ Modify: [35m04/03/12 2:05:27 [37m<telnet.hinet.net> [m