Haskell程式:將數字舍入到n位小數


在 Haskell 中,我們可以使用 round、printf 和 truncate 函式將數字舍入到 n 位小數。在第一個示例中,我們將使用 (roundTo n x = (fromInteger $ round $ x * (10^n)) / (10.0^^n)) 函式,在第二個示例中,我們將使用 (roundTo n x = read $ printf ("%." ++ show n ++ "f") x) 函式。在第三個示例中,我們將使用 (roundTo n x = fromIntegral (truncate $ x * 10^n) / 10^n)。

演算法

  • 步驟 1 − 使用 round 函式定義 roundTo 函式

  • 步驟 2 − 程式執行將從 main 函式開始。main() 函式控制整個程式。它被寫成 main = do。

  • 步驟 3 − 定義名為 'x' 的變數,該變數將儲存要舍入到 n 位小數的十進位制數字值。

  • 步驟 4 − 呼叫 roundTo 函式,並將數字以及應舍入到的十進位制位數作為引數傳遞給它。

  • 步驟 5 − 一旦函式被呼叫,將舍入後的數字值(舍入到 n 位小數)列印到控制檯。

示例 1

在此示例中,使用 round 函式將數字舍入到 n 位小數。

roundTo :: Int -> Double -> Double
roundTo n x = (fromInteger $ round $ x * (10^n)) / (10.0^^n)

main :: IO ()
main = do
   let x = 3.14159265358979323846264338327950288419716939937510
   let rounded = roundTo 4 x
   putStrLn $ "Original number: " ++ show x
   putStrLn $ "Number rounded to 4 decimal places: " ++ show rounded

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
Original number: 3.141592653589793
Number rounded to 4 decimal places: 3.1416

示例 2

在此示例中,使用 printf 函式將數字舍入到 n 位小數。

import Text.Printf (printf)

roundTo :: Int -> Double -> Double
roundTo n x = read $ printf ("%." ++ show n ++ "f") x

main :: IO ()
main = do
   let x = 3.14159265358979323846264338327950288419716939937510
   let rounded = roundTo 4 x
   putStrLn $ "Original number: " ++ show x
   putStrLn $ "Number rounded to 4 decimal places: " ++ show rounded

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
Original number: 3.141592653589793
Number rounded to 4 decimal places: 3.1416

示例 3

在此示例中,使用 truncate 函式將數字舍入到 n 位小數。

roundTo :: Int -> Double -> Double
roundTo n x = fromIntegral (truncate $ x * 10^n) / 10^n

main :: IO ()
main = do
   let x = 3.14159265358979323846264338327950288419716939937510
   let rounded = roundTo 4 x
   putStrLn $ "Original number: " ++ show x
   putStrLn $ "Number rounded to 4 decimal places: " ++ show rounded

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
Original number: 3.141592653589793
Number rounded to 4 decimal places: 3.1415

結論

在 Haskell 中將數字舍入到 n 位小數意味著您希望將給定數字舍入到特定的小數位數,其中 n 是您要舍入到的位數。我們可以透過使用 round、printf 和 truncate 函式來實現這一點。

更新於: 2023年3月28日

1K+ 閱讀量

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.