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+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告