Haskell程式:將字串變數轉換為雙精度浮點數
在Haskell中,我們將使用使用者自定義函式`stringToDouble`以及`read`註解、`readMaybe`和`double`函式將字串型別變數轉換為雙精度浮點數。在第一個示例中,我們將使用`(let value = read input :: Double)`,在第二個示例中,我們將使用`(stringToDouble s = readMaybe s)`。在第三個示例中,我們將使用`(stringToDouble s = case double $ pack s of)`。
演算法
步驟1 - 程式執行將從`main`函式開始。`main()`函式控制整個程式。它被寫成`main = do`。
步驟2 - 初始化名為“input”的變數。它將儲存要轉換為相應雙精度浮點值的字串值。
步驟3 - 呼叫`read`註解獲取雙精度浮點值。
步驟4 - 使用`putStrLn`語句將生成的雙精度浮點值列印到控制檯。
示例1
在這個例子中,`read input`後的`:: Double`是一個型別註解,它告訴Haskell我們將輸入字串轉換為雙精度浮點數。然後使用`putStrLn`和`show`列印生成的雙精度浮點值。
main :: IO () main = do let input = "125.34" let value = read input :: Double putStrLn $ "The double value is: " ++ show value
輸出
The double value is: 125.34
示例2
在這個例子中,`Text.Read`模組中的`readMaybe`函式返回一個`Maybe`值,如果解析成功,則為`Just`解析值,如果失敗則為`Nothing`。
import Text.Read (readMaybe)
stringToDouble :: String -> Maybe Double
stringToDouble s = readMaybe s
main :: IO ()
main = do
let input = "123.45"
case stringToDouble input of
Just value -> putStrLn $ "The double value is: " ++ show value
Nothing -> putStrLn "Invalid input"
輸出
The double value is: 123.45
示例3
在這種方法中,`double`函式返回一個`Right`值(包含解析的雙精度浮點數和任何剩餘文字)或一個`Left`值(包含錯誤訊息)。
import Data.Text (pack)
import Data.Text.Read (double)
stringToDouble :: String -> Maybe Double
stringToDouble s = case double $ pack s of
Right (d, _) -> Just d
Left _ -> Nothing
main :: IO ()
main = do
let input = "123.45"
case stringToDouble input of
Just value -> putStrLn $ "The double value is: " ++ show value
Nothing -> putStrLn "Invalid input"
輸出
The double value is: 123.45
結論
字串到雙精度浮點數的轉換是將數值的字串表示形式(例如“3.14”)轉換為雙精度浮點數(也稱為雙精度浮點數)的過程。在Haskell中,您可以使用`read`函式將字串轉換為雙精度浮點數。`read`函式接受一個字串並返回指定型別的值,例如`Double`。如果字串無法解析為有效的雙精度浮點數,則會丟擲錯誤。也可以使用`Text.Read`和`Data.Text.Read`模組中的`readMaybe`函式或其他解析函式來更優雅地處理錯誤。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP