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`函式將長整型變數轉換為整型。