類型類Integral有兩個操作quot
和div
,但在Haskell 2010語言報告中沒有指定它們應該執行的操作。假設div
是整數除法,quot
與quot
有什麼不同?你什麼時候使用一個,什麼時候使用另一個?積分運算符與div對齊
46
A
回答
88
要從Haskell的報告中引用部分6.4.2:
的quot
,rem
,div
,和mod
類方法滿足這些法律如果y爲非零:
(x `quot` y)*y + (x `rem` y) == x
(x `div` y)*y + (x `mod` y) == x
quot
是整數劃分向零截斷,而div
的結果被截斷爲負無窮。
div
函數通常是更自然的函數,而quot
函數對應於現代機器上的機器指令,因此效率更高。
26
當處理負數時,兩者表現不同。試想一下:
Hugs> (-20) `divMod` 3
(-7,1)
Hugs> (-20) `quotRem` 3
(-6,-2)
這裏,-7 * 3 + 1 = -20
和-6 * 3 + (-2) = -20
,但兩種方法給你不同的答案。
另外,在這裏看到:http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html
爲quot
的定義是「整數除法朝向零截斷」,而對於div
的定義是「整數除法向負無窮截斷」。
+1
你知道,還有' divMod'和'quotRem' ... – fuz
相關問題
- 1. 微積分三元運算符類
- 2. Lambda微積分運算符優先級
- 3. Css Div與div對齊
- 4. 對齊div與CSS
- 5. 長字符串與div對齊/形成
- 6. 不能對齊分頁div
- 7. 問題與div對齊
- 8. 按鈕不與div對齊
- 9. 對齊的div verticaly與jQuery
- 10. 將div與列表對齊
- 11. 將表格與div對齊
- 12. 正確對齊div與左對齊div內聯?
- 13. 對齊4 div與父div中的百分比尺寸
- 14. 定製Theano運算數值積分
- 15. 指針運算和積分提升
- 16. Java字符對齊算法
- 17. 積分與離子積分
- 18. 強制div與上部div對齊
- 19. ||運算符與=運算符相同嗎?
- 20. 定義二元指數運算符CARAT.in lambda微積分CARAT
- 21. 問題與重載分配運算符
- 22. POSTGIS計算積分
- 23. Romberg積分算法
- 24. 對char分割故障++運算符*
- 25. |算子與||運算符
- 26. 0對 '0' 與布爾運算符
- 27. Css div對齊
- 28. CSS&DIV對齊
- 29. DIV/Form對齊
- 30. 對齊的div
這似乎是一個很有前途的鏈接:http://cdsmith.wordpress.com/2007/06/02/learning-number-theory-and-haskell-the-division-algorithm/ –