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