close
今天強者我同事跑來問我程式裡面分數運算的約分該如何做?這一問,難倒我了,寫程式那麼久從來就沒做過分數運算,通常就是直接浮點數給他下去啦,後來想想浮點數運算越做偏差應該會越大齁?所以約分應該也是有道理的。
上網查了一下,原來分數運算要用最大公因數演算法(Greatest Common Divisor, GCD)來做阿~小學學的東西已經還給老師了,老師我對不起你....碩士唸畢業還不如一個小學生Orz
最大公因數求解可用直因數分解或者輾轉相除法來做,下面這個範例是網路上找到的輾轉相除法code:
int GCD(int A,int B) { //宣告整數R用來存放餘數 int R; //除數不能等於0,如果除數B等於0,返回-1 if (B==0) return -1; //當A除以B有餘數時則持續作輾轉相除法 while ( (R = A % B) != 0 ) { //除完一次後,除數被除數互換 A = B; B = R; } //回傳最大公因數B return B; } |
小小的一個簡單的演算法,很容易的就看出來我平常程式寫的不夠多,這間辦公室裡面除了國防役之外,很多人都是私立大學甚至是職校畢業的學生,雖然他們沒有國立大學碩士的光環,但是他們還是很競競業業的不斷學習,就如問這個問題的同事是某私立大學資管系畢業,資管系畢業的他說他不會寫程式(這個很正常,國立大學資管系畢業的也沒幾個會寫),最近才開始學寫C++,但是每次看到他拿著一疊原文資料在K,星期六來公司加班也遇到他,初學者的第一個問題就考倒我了@@,真的不由自主的對他肅然起敬,也不只有他,像是即將成為交大新鮮人的小王子學長,本組扛霸子,在忙碌的公務之餘,還能抽空唸書考到交大,整個的就是強到爆炸
反過來看自己,國立研究所畢業沒什麼專長,還好在這邊工作的大家人都很好,有問題都會很熱心的幫忙解決(熱心到我都不好意思去麻煩人家了),跟S.Y.的前公司來比反差真大,自己也要多努力念書啦,不然就這樣一直拖累大家也不好,年輕的辦公室就是有衝勁阿~
全站熱搜