作者chchwy (mat)
看板NTUE-CS100
标题Re: [课业] 大数运算
时间Sun Dec 28 16:21:52 2008
拐进程式码丛林之前,先来想像一下
这支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)