How can we truncate float64 type to a particular precision?

前端 未结 12 1410
礼貌的吻别
礼貌的吻别 2021-02-02 05:33
package main

import (
    \"fmt\"
    \"strconv\"
    )

func main() {
    k := 10/3.0
    i := fmt.Sprintf(\"%.2f\", k)
    f,_ := strconv.ParseFloat(i, 2)
    fmt.Pri         


        
12条回答
  •  北海茫月
    2021-02-02 06:19

    Functions without checking for large floats

    // Rounds like 12.3416 -> 12.35
    func RoundUp(val float64, precision int) float64 {
        return math.Ceil(val*(math.Pow10(precision))) / math.Pow10(precision)
    }
    
    // Rounds like 12.3496 -> 12.34
    func RoundDown(val float64, precision int) float64 {
        return math.Floor(val*(math.Pow10(precision))) / math.Pow10(precision)
    }
    
    // Rounds to nearest like 12.3456 -> 12.35
    func Round(val float64, precision int) float64 {
        return math.Round(val*(math.Pow10(precision))) / math.Pow10(precision)
    }
    

提交回复
热议问题