91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ruby取模探險記

發布時間:2020-05-30 22:30:01 來源:網絡 閱讀:1417 作者:melon_tony 欄目:編程語言

Ruby 的負數除法為什么要向負無窮取整呢?

今天學習Ruby的過程中遇到一個問題:

puts (5 % 3)  # prints 2
puts (-5 % 3) # prints 1
puts (5 % -3) # prints -1
puts (-5 % -3)# prints -2

看了半天表示沒有找到什么好的規律...

于是搜之,翻到了整數除法定義:

class Float 
    def to_s  
        format("%.4f", self)  
    end 
end 
 
class Fixnum 
    def / (num)  
        self.to_f/num.to_f  
    end 
end

感覺ruby定義的真是干凈利落!貌似只要是懂英語的都能看懂呵呵~

先轉成浮點,然后除之。

那么-5%3怎么就等于-1了呢?

有公式a%b = a - (a/b * b).于是乎,應該先求出來-5/3。根據上面公式知道-5/3會利用小數除法,即-5/3 = -1.6666666...那該怎么去小數部分呢?起初我以為是按照取絕對值,然后四舍五入,那么-1.6666666...應該是-2,沒錯,對于這個除法結果是正確的。

但是,對于-4%3呢?

按照取絕對值,然后四舍五入來算,那么-4/3 = -1.33333...那么,應該得到-1,于是乎,模應該是-1;不過,大家都懂得,既然都寫到這了,怎么著這個值也不能再等于-1了吧。呵呵,你猜的沒錯,(-4/3 == -2)這個表達式是true。

What's the fuck???!!!

我-4怎么能和-5一樣???我-4的那個1呢!!!我-4竟然和“歐巴”-5一樣大Ruby取模探險記這讓我以后再數字界怎么混@_@

好了,言歸正傳,為什么會這樣,又搜了搜,發現下面的一些注解:

問:"Ruby rounds(翻譯成圓整?取整?四舍五入?) toward negative infinity."IA32 的div命令不是向零取整嗎?rub為什么要多此一舉向負無窮rounds呢?這樣有什么特別的意義嗎?

答:沒有什么特別的意義,在《Ruby Programming Language》3.1.3中說明了,與C相關的語言,如C,C++,Java是向零取整,Python,Tcl,Ruby是向負無窮取整。在x86指令中,SAR是向右取整的,IDIV是向零取整的。

好吧,原來就是這么平淡無奇的原因,以為會有什么好的發現,有些失望...

就這么著吧,傷心了呵呵~

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

淅川县| 辽中县| 湟中县| 巴东县| 社会| 肃南| 盘山县| 浦城县| 临武县| 新乡县| 开封市| 古交市| 叶城县| 新丰县| 松溪县| 拜城县| 岳阳市| 常山县| 贵德县| 吉安市| 桃园市| 安丘市| 营口市| 遂溪县| 南投市| 铁岭市| 珲春市| 鄂州市| 白银市| 丰镇市| 方山县| 方城县| 永丰县| 沁阳市| 三门县| 沈阳市| 隆子县| 湛江市| 宿松县| 五峰| 射洪县|