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 函数来实现这一点。
广告