我在Haskell中编写一个函数来处理超过32位int的数字。我找不到这种类型,我似乎在寻找错误的术语。
它需要能够保持长度约为2 ^ 40的数字而不会有任何精度损失
示例:
addTwo :: Int -> Int -> Int
addTwo a b = a + b
main :: IO()
main = do
putStrLn ( show ( addTwo 700851475143 1 ) )
答案 0 :(得分:21)
对于无界精度,请使用Integer类型。对于64位精度,跨平台,使用Data.Int.Int64。使用Hoogle很容易找到两者:http://haskell.org/hoogle/
答案 1 :(得分:7)
您需要Integer
数据类型而不是Int
:
addTwo :: Integer -> Integer -> Integer
答案 2 :(得分:0)
使用Integer
,这是无限制的精度,而不是Int
。