拐進程式碼叢林之前,先來想像一下
這支BigNum Class寫成之後應該會變啥樣子? 怎麼使用?
比如說要計算下面這個式子
( 8888.168 + (-0.00004444)) * 5205201314 = ?
怎麼寫成程式呢?
//-----------想像圖--------------------
BigNum n1 = new BigNum("8888.168");
BigNum n2 = new BigNum("-0.00004444");
BigNum n3 = new BigNum("5205203344");
n1.add( n2 ); //代表n1=n1+n2
n1.multiply( n3 ); //代表n1=n1*n3
System.out.print( "n1=" + n1.toString() ); //螢幕印出結果
//-----------想像結束--------------------
如果能寫成這樣,那這隻BigNum就是一個用起來方便直覺的class了,對吧?
心中有了藍圖,我們就能開始規劃class的行為了
1. 首先建構子Constructor必須能把字串轉成科學記號法來儲存。
2. 支援四則運算
3. 可以用toString()把科學記號法轉回一般人熟悉的數字模樣。
//加入行為後的大數型態
class BigNum{
int sign;
StringBuffer mantissa;
int exp;
//function
BigNum(String input){} //Constructor建構子
public BigNum add ( BigNum input ) {} //加
public BigNum substract( BigNum input ) {} //減
public BigNum multiply ( BigNum input ) {} //乘
public BigNum divide ( BigNum input ) {} //除
public String toString(){} //印出數字
}
程式架構已經顯明,接下來就是實做內容啦!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.68.15.209
※ 編輯: chchwy 來自: 203.68.15.209 (12/28 16:22)
※ 編輯: chchwy 來自: 203.68.15.209 (12/28 16:22)