數學運算

Home Home
引用 | 編輯 aaaasszx
2011-10-09 20:54
樓主
推文 x0
這個平方很像不支援小數和太大的數
如何解決/?
還有平方根寫法
想讓功課可以快一點寫完
所以有寫這的想法


#inclu ..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 ebolaman
2011-10-09 23:32
1樓
  
關於不支援 太大的數,以及小數

因為 int 的儲存格式是 integer(整數),所以無法儲存 小數部分
而且 int 長度是 4 bytes,一旦平方...就 overflow(溢位) 了


因此將宣告 a 的型態改成 double (浮點數,可以儲存小數,長度 8 bytes) 就行了


至於大的數,可以在宣告前面加上 long 形成長浮點數 (12 bytes)

平方是用 math.h 定義的函式 pow
平方根則是用 sqrtl (long double 型態)


複製程式
#include <cstdio>
#include <cstdlib>
#include <cmath>

#include <iostream>

using namespace std;

int main(void)
{

    long double a;
    cout << "輸入要平方之數\n";
    cin >> a;

    cout.setf(ios::fixed);

    cout << "平方後 = " << pow(a, 2) << endl;
    cout << "開根號 = " << sqrtl(a) << endl;

    cin.sync();
    cin.get();

    return 0;
}



獻花 x1
引用 | 編輯 aaaasszx
2011-10-10 07:26
2樓
  
哇!
沒想到C++寫這麼快喔 表情
可是輸入數字號按回車
會跳出來

獻花 x0
引用 | 編輯 ebolaman
2011-10-10 09:15
3樓
  
下面是引用 aaaasszx 於 2011-10-10 07:26 發表的 : 到引言文
哇!
沒想到C++寫這麼快喔 表情
可是輸入數字號按回車
會跳出來


已經修正程式碼了,因為輸入的 buffer 如果沒有清空

遇到 getchar() 或是 cin.get() 時,就會自動執行過去...就會直接跳出了



之前看到一篇文章說盡量不要用 system("pause")  所以現在才改成 cin.get() 或是 getchar()

獻花 x1