Haskell 64位数字类型

时间:2009-06-14 22:41:41

标签: haskell types integer numerical

我在Haskell中编写一个函数来处理超过32位int的数字。我找不到这种类型,我似乎在寻找错误的术语。

它需要能够保持长度约为2 ^ 40的数字而不会有任何精度损失

示例:

addTwo :: Int -> Int -> Int
addTwo a b = a + b

main :: IO()
main = do
    putStrLn ( show ( addTwo 700851475143 1 ) )

3 个答案:

答案 0 :(得分:21)

对于无界精度,请使用Integer类型。对于64位精度,跨平台,使用Data.Int.Int64。使用Hoogle很容易找到两者:http://haskell.org/hoogle/

答案 1 :(得分:7)

您需要Integer数据类型而不是Int

addTwo :: Integer -> Integer -> Integer

答案 2 :(得分:0)

使用Integer,这是无限制的精度,而不是Int