Golang 截断浮点数 float32 / float64 到指定位数,多余的扔掉/固定小数位数(改进版)

yufei       4 年, 6 月 前       4069

针对原版,改进版有两个地方变动

  1. 使用小数位数
  2. 使用 %s%v 来演示输出
package main

import (
    "fmt"
    "strconv"
    "math"
)

// prec 代表小数位数
func TrunFloat(f float64, prec int) float64 {
    x := math.Pow10(prec)
    return math.Trunc(f*x) / x
}

func main() {


    f := 2.0/3;

    // 截断 8 位小数
    f2 := TrunFloat(f, 16)

    // 输出结果 0.6666666666666666
    fmt.Printf("%v\n", f2)

    // -1 参数表示保持原小数位数,千万要注意,如果你指定了位数就会四舍五入了
    d2 := strconv.FormatFloat(f2,'f',-1,64)

    // 输出结果 0.6666666666666666
    fmt.Printf("%s\n", d2)
}
目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.