bca*_*cat 173
"整数"是一种任意精度类型:它可以保存任何数字,无论多大,直到机器内存的极限...... 这意味着你永远不会有算术溢出.另一方面,它也意味着你的算术相对较慢.Lisp用户可以在这里识别"bignum"类型.
"Int"是更常见的32位或64位整数.实现方式各不相同,但保证至少为30位.
资料来源:Haskell Wikibook.此外,您可能会发现Haskell的A Gentle Introduction的Numbers部分很有用.
Nul*_*ion 19
Int是机器整数的类型,保证范围至少为-2 29到2 29 - 1,而Integer是任意精度整数,范围与内存一样大.
https://mail.haskell.org/pipermail/haskell-cafe/2005-May/009906.html
200*_*ess 19
Int是Bounded,这意味着你可以使用minBound和maxBound找出限制,这些限制是依赖于实现的,但保证至少保持[-2 29 .. 2 29 -1].
例如:
Prelude> (minBound, maxBound) :: (Int, Int)
(-9223372036854775808,9223372036854775807)
Run Code Online (Sandbox Code Playgroud)
但是,Integer是任意精度,而不是Bounded.
Prelude> (minBound, maxBound) :: (Integer, Integer)
<interactive>:3:2:
No instance for (Bounded Integer) arising from a use of `minBound'
Possible fix: add an instance declaration for (Bounded Integer)
In the expression: minBound
In the expression: (minBound, maxBound) :: (Integer, Integer)
In an equation for `it':
it = (minBound, maxBound) :: (Integer, Integer)
Run Code Online (Sandbox Code Playgroud)
Min*_*ang 10
Int是C int,这意味着它的值范围从-2147483647到2147483647,而整数Z设置的整数范围,也就是说,它可以是任意大的.
$ ghci
Prelude> (12345678901234567890 :: Integer, 12345678901234567890 :: Int)
(12345678901234567890,-350287150)
Run Code Online (Sandbox Code Playgroud)
注意Int文字的值.
Prelude只定义了最基本的数字类型:固定大小的整数(Int),任意精度整数(Integer),...
...
有限精度整数类型Int至少涵盖范围[ - 2 ^ 29,2 ^ 29 - 1].
来自Haskell的报告:http://www.haskell.org/onlinereport/basic.html#numbers