創作內容

1 GP

Modulo 模除(或稱 模數)

作者:秋之月│2019-05-26 15:21:53│巴幣:2│人氣:1478
網頁開發/程式課程備份文。
Ruby

---------------------
在課程的作業中, 看到有學長姊使用了modulo,
好奇之下去搜尋那個到底是啥?

先講結論, 模除就是去取兩數相除的餘數,
也就是Ruby中的 x % y

本來以為這應該是數學系才會學到的東西,
但仔細看看維基的內容, 感覺好像不是, 這應該算是工程學或是應用數學吧......?
所以推測應該資工or資管會學到這個概念......?

在Ruby中, 除了 % 可以求餘數之外,
還有另一個方法是使用modulo指令

modulo指令的使用如下:

x = 3
y = 2
x.modulo(y) # 1

x.modulo(y) == x % y  # true

可參考, APIdock - modulo
重點是, modulo的說明中, 有解釋這背後是怎麼算的

x.modulo(y) == x - y* ( x / y ).floor # floor,無條件去小數

原理大概是這樣,





x 除 y 的 餘數 = x - ( 商*y )
( x / y ).floor, 取得的就是商
所以就出現上面那樣的算式

那為什麼不直接用 x % y 就好了?
為啥要搞得那麼複雜呢?

對!! 重點就是, 為啥求個餘數要這麼麻煩?
x % y 這個寫法, 應該只是 x.modulo(y) 的簡化版
推測應該前者是舊版本的寫法, 前者的精簡寫法是版本更新後追加的
而兩者的後台運算法是一樣的

有趣的點是, 可以想想為什麼要這樣算?
可以拿出一個計算機, 試著去按按看, 會發現計算機並沒有提供計算餘數的功能
因為計算餘數對電腦來說, 是無法理解的

能夠透過 x / y 除完之後, 自行去判斷誰是商, 誰是餘, 這個人腦才做的到
電腦是做不到的
電腦只會一直給他除除除除, 直到除盡為止
所以叫電腦去算除法, 它只會回傳給你一個浮點數 (小數)

為了利用電腦來自動化, 時常會需要利用餘數來做一些條件判斷
例如, 判斷奇數? 偶數?

所以才必須要想辦法讓電腦能夠算出餘數
因此工程學或是應用數學, 才必須要去研究 modulo (模除)
經過許多年的發展, 才能出現我們現在使用的 x % y, 如此精簡的指令


引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4405687
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 1 篇留言

艾爾頓
你日本留學那邊怎樣,怎麼由畫畫變成c 程式了

08-20 19:43

秋之月
留學已經結束了。衡量自己的狀況,現在打算轉回程式領域。08-21 15:41
我要留言提醒:您尚未登入,請先登入再留言

1喜歡★jamesnet 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:淺拷貝(Shallow ...

追蹤私訊切換新版閱覽

作品資料夾

Waterfall10絕大部份巴友
分享網路小說《全職藝術家》,作者:我最白,歡迎瀏覽 ~看更多我要大聲說昨天22:21


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】