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`函式或其他解析函式來更優雅地處理錯誤。

更新於:2023年4月20日

679 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.