SG

四捨五入、切上げ、切捨て

> 
/// 切り上げ
let RoundUp value digits = 
    
    let pow = pown 10. digits
    let compute f x = f(x * pow) / pow

    if value > 0. then
        compute ceil  value
    else
        compute floor value

/// 切捨て
let RoundDown value digits = 

    let pow = pown 10. digits
    let compute f x = f(x * pow) / pow

    if value > 0. then
        compute floor value
    else
        compute ceil  value

/// 四捨五入
let Round value digits = 

    let pow = pown 10. digits
    let compute f x r = f(x * pow + r) / pow

    if value > 0. then
        compute floor value  0.5
    else
        compute ceil  value -0.5
;;

val RoundUp : float -> int -> float
val RoundDown : float -> int -> float
val Round : float -> int -> float

> RoundUp 3.1415 3;;
val it : float = 3.142
> RoundDown 3.1415 3;;
val it : float = 3.141
> Round 3.1415 3;;
val it : float = 3.142
>