小编For*_*ost的帖子

Haskell:如何正确显示最多两位小数的百分比?

在程序中,我计算一个百分比并将其打印给用户.问题是打印的百分比显示的小数点太多.我搜索了一个解决这个问题的函数,没找到,并编写了下面的舍入函数,但我想知道是否有更标准的方法来代替.此外,这个Java主题中描述的想法非常简洁,如果已经有功能这样做,我很想知道.

roundTo :: (Integral int1, Integral int2) => int1 -> Double -> Either int2 Double
roundTo digitsAfterComma value
    | (digitsAfterComma >= 1) =
        let
            factor = fromIntegral (10 ^ digitsAfterComma)
            result = ((/ factor) . fromIntegral . round . (* factor)) value
        in
            Right result
    | (digitsAfterComma == 0) = Left (round value)
    | otherwise = error "minimal precision must be non-negative"
Run Code Online (Sandbox Code Playgroud)

更新:接下来是一个更完整的版本,这要归功于我收到的一些答案.

import qualified Text.Printf as T

showPercentage :: (Integral a, Show a) => a -> Double …
Run Code Online (Sandbox Code Playgroud)

double haskell rounding show

11
推荐指数
2
解决办法
1956
查看次数

标签 统计

double ×1

haskell ×1

rounding ×1

show ×1