5

我正在用 Haskell 编写一个函数来处理超过 32 位 int 长度的数字。我找不到执行此操作的类型,而且我似乎在寻找错误的术语。

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

例子:

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

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

3 回答 3

21

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

于 2009-06-15T03:43:14.930 回答
7

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

addTwo :: Integer -> Integer -> Integer
于 2009-06-14T22:46:00.840 回答
0

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

于 2009-06-14T22:46:32.493 回答