Haskell程序:将长整型变量转换为整型


在Haskell中,我们可以使用`fromIntegral`函数以及`toInteger`和`truncate`函数,`div`和`mod`函数来将长整型变量转换为整型。在第一个例子中,我们将使用`(let intVar = fromIntegral longVar :: Int)`,在第二个例子中,我们将使用`(let highPart = fromIntegral (longVar `div` 2^32) :: Int and let lowPart = fromIntegral (longVar `mod` 2^32) :: Int)`。

算法

  • 步骤1 - 程序执行将从`main`函数开始。`main()`函数控制整个程序。它被写成`main = do`。

  • 步骤2 - 变量“longVar”被初始化。它将保存要转换为相应整数值的长整型变量。

  • 步骤3 - 调用`fromIntegral`函数并将`longVar`作为参数传递给它。

  • 步骤4 - 函数调用后,使用`putStrLn`语句将结果整数值打印到控制台。

示例1

在这个例子中,函数是使用`fromIntegral`函数定义的,用于将长整型变量转换为`Int`。

main :: IO ()
main = do
   let longVar = 123456789123456789
   let intVar = fromIntegral longVar :: Int
   putStrLn $ "The long value is " ++ show longVar ++ "."
   putStrLn $ "The corresponding integer value is " ++ show intVar ++ "."

输出

The long value is 123456789123456789.
The corresponding integer value is 123456789123456789.

示例2

在这个例子中,函数是使用`fromIntegral`和`truncate`函数定义的,用于将长整型变量转换为`Int`。

main :: IO ()
main = do
   let longVar = 123456789123456789
   let intVar = truncate (fromIntegral longVar :: Double) :: Int
   putStrLn $ "The long value is " ++ show longVar ++ "."
   putStrLn $ "The corresponding integer value is " ++ show intVar ++ "."

输出

The long value is 123456789123456789.
The corresponding integer value is 123456789123456789.

示例3

在这个例子中,函数是使用`fromIntegral`和`toInteger`函数定义的,用于将长整型变量转换为`Int`。

main :: IO ()
main = do
   let longVar = 123456789123456789
   let intVar = fromIntegral (toInteger longVar) :: Int
   putStrLn $ "The long value is " ++ show longVar ++ "."
   putStrLn $ "The corresponding integer value is " ++ show intVar ++ "."

输出

The long value is 123456789123456789.
The corresponding integer value is 123456789123456789.

示例4

在这个例子中,函数是使用`fromIntegral`函数定义的,用于将长整型变量转换为`Int`。

main :: IO ()
main = do
   let longVar = 123456789123456789
   let highPart = fromIntegral (longVar `div` 2^32) :: Int
   let lowPart = fromIntegral (longVar `mod` 2^32) :: Int
   let intVar = highPart * 2^32 + lowPart
   putStrLn $ "The long value is " ++ show longVar ++ "."
   putStrLn $ "The corresponding integer value is " ++ show intVar ++ "."

输出

The long value is 123456789123456789.
The corresponding integer value is 123456789123456789.

结论

在Haskell中,长整型变量表示一个64位有符号整数,而整型变量表示一个依赖于机器的有符号整数,通常是32位或64位,这取决于平台。因此,如果长整型值太大而无法放入整型中,则将长整型变量转换为整型变量可能会导致精度损失。在Haskell中,可以使用`fromIntegral`函数以及`truncate`和`toInteger`函数,以及`div`和`mod`函数将长整型变量转换为整型。

更新于:2023年3月13日

215 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告