欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang小數(shù)操作指南之判斷小數(shù)點位數(shù)與四舍五入

 更新時間:2022年03月03日 10:23:56   作者:頭禿貓輕王  
這篇文章主要給大家介紹了關(guān)于Golang小數(shù)操作指南之判斷小數(shù)點位數(shù)與四舍五入的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

一、判斷幾位小數(shù)點

1.判斷幾位小數(shù)點

加載 cast 包

go get github.com/spf13/cast

代碼如下(示例):

package main
import (
	"fmt"
	"github.com/spf13/cast"
	"math"
	"regexp"
	"strconv"
)

func main() {
	num1 := 5.335
	// 判斷幾位小數(shù)
	decimal, _ := CheckDecimal(cast.ToString(num1), "2")
	fmt.Println(decimal)

}

// CheckDecimal 判斷小數(shù)點后幾位小數(shù)點
// str 所要判斷的 小數(shù)字符串
// n 所要判斷的 位數(shù)
func CheckDecimal(str string, n string) (bool, error) {
	// 通過 regexp 的 正則比較
	// ([1-9]\d*) 1-9 的任意位數(shù)
	// (0) 或者第一位是 0
	// d{0,`+n+`} 0-n 位數(shù)
	return regexp.MatchString(`^(([1-9]\d*)|(0))(\.\d{0,`+n+`})?$`, str)
}

二、四舍五入

1.fmt.Sprintf

測試:

5.334
5.335
5.336

代碼如下(示例):

package main
import (
	"fmt"
	"github.com/spf13/cast"
	"math"
	"strconv"
)

func main() {
	num1 := 5.334
	fmt.Println(Float64Rand(num1,2))

}

//四舍五入
func Float64Rand(v float64, dig int) float64 {
	cDig := strconv.Itoa(dig)
	val := fmt.Sprintf("%0."+cDig+"f", v)
	return cast.ToFloat64(val)
}

結(jié)果

從結(jié)果可以知道,官方包 fmt的四舍五入功能 不能達(dá)到我們的完美預(yù)期,四舍可以完成,但五入失敗,只有當(dāng)?shù)谌怀蔀榱鶗r才可生效

2.math.Round(result*pow)

測試:

5.334
5.335
5.336

代碼如下(示例):

package main
import (
	"fmt"
	"github.com/spf13/cast"
	"math"
	"strconv"
)

func main() {
	num1 := 5.334
	fmt.Println("num1:",num1)
	fmt.Println("res1:",FormatFloat(num1,2))
	num2 := 5.335
	fmt.Println("num2:",num2)
	fmt.Println("res2:",FormatFloat(num2,2))
	num3 := 5.336
	fmt.Println("num3:",num3)
	fmt.Println("res3:",FormatFloat(num3,2))
}

func FormatFloat(f float64, dig int) float64 {
	result := cast.ToFloat64(strconv.FormatFloat(f, 'f', dig+1, 64))
	pow := math.Pow(10, float64(dig))
	return math.Round(result*pow) / pow
}

結(jié)果

從結(jié)果可以知道,math.Round(result*pow) 可以達(dá)到我們的完美預(yù)期,四舍五入可以完成。

總結(jié)

當(dāng)官方包不足以滿足我們的需要時,我們需要去尋找一個可以滿足需要的方法來實現(xiàn)想要的功能,也將會在之后努力通過官方包實現(xiàn)四舍五入,讓自己拓展知識面。

到此這篇關(guān)于Golang小數(shù)操作指南之判斷小數(shù)點位數(shù)與四舍五入的文章就介紹到這了,更多相關(guān)Golang判斷小數(shù)點與四舍五入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 讓go程序以后臺進(jìn)程或daemon方式運(yùn)行方法探究

    讓go程序以后臺進(jìn)程或daemon方式運(yùn)行方法探究

    本文探討了如何通過Go代碼實現(xiàn)在后臺運(yùn)行的程序,最近我用Go語言開發(fā)了一個WebSocket服務(wù),我希望它能在后臺運(yùn)行,并在異常退出時自動重新啟動,我的整體思路是將程序轉(zhuǎn)為后臺進(jìn)程,也就是守護(hù)進(jìn)程(daemon)
    2024-01-01
  • 初學(xué)Go必備的vscode插件及最常用快捷鍵和代碼自動補(bǔ)全

    初學(xué)Go必備的vscode插件及最常用快捷鍵和代碼自動補(bǔ)全

    這篇文章主要給大家介紹了關(guān)于初學(xué)vscode寫Go必備的vscode插件及最常用快捷鍵和代碼自動補(bǔ)全的相關(guān)資料,由于vscode是開源免費(fèi)的,而且開發(fā)支持vscode的插件相對比較容易,更新速度也很快,需要的朋友可以參考下
    2023-07-07
  • Go語言中Timer計時器的使用技巧詳解

    Go語言中Timer計時器的使用技巧詳解

    Go語言中的time包里有個Timer計時器的功能,這篇文章主要就是來和大家介紹一下Timer計時器的使用技巧,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07
  • 利用Go Plugin實現(xiàn)插件化編程的簡單方法

    利用Go Plugin實現(xiàn)插件化編程的簡單方法

    Golang官方提供了plugin模塊,該模塊可以支持插件開,下面這篇文章主要給大家介紹了關(guān)于如何利用Go Plugin實現(xiàn)插件化編程的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Go?分布式鏈路追蹤實現(xiàn)原理解析

    Go?分布式鏈路追蹤實現(xiàn)原理解析

    分布式鏈路追蹤作為解決分布式應(yīng)用可觀測問題的重要技術(shù),愈發(fā)成為分布式應(yīng)用不可缺少的基礎(chǔ)設(shè)施,本文將詳細(xì)介紹分布式鏈路的核心概念、架構(gòu)原理和相關(guān)開源標(biāo)準(zhǔn)協(xié)議,并分享我們在實現(xiàn)無侵入 Go 采集 Sdk 方面的一些實踐,需要的朋友可以參考下
    2022-06-06
  • Go語言針對Map的11問你知道幾個?

    Go語言針對Map的11問你知道幾個?

    Go?Map?的?11?連問,你頂?shù)昧寺?這篇文章小編為大家準(zhǔn)備了?Go?語言?Map?的?11?連問,相信大家看完肯定會有幫助的,感興趣的小伙伴可以收藏一波
    2023-05-05
  • Linux系統(tǒng)下Go語言開發(fā)環(huán)境搭建

    Linux系統(tǒng)下Go語言開發(fā)環(huán)境搭建

    這篇文章主要介紹了Linux系統(tǒng)下Go開發(fā)環(huán)境搭建,需要的朋友可以參考下
    2022-04-04
  • GoLang之標(biāo)準(zhǔn)庫encoding/json包

    GoLang之標(biāo)準(zhǔn)庫encoding/json包

    本文主要介紹了GoLang之標(biāo)準(zhǔn)庫encoding/json包,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • go語言實現(xiàn)抓取高清圖片

    go語言實現(xiàn)抓取高清圖片

    本文給大家分享的是使用go語言實現(xiàn)的抓取高清美女圖片的代碼,原理非常簡單,這里就不多廢話了,主要是看到很多小伙伴使用python實現(xiàn)的,心血來潮就用go寫了下,推薦給大家。
    2015-03-03
  • 詳解Go?語言如何通過測試保證質(zhì)量

    詳解Go?語言如何通過測試保證質(zhì)量

    這篇文章主要為大家介紹了Go?語言如何通過測試保證質(zhì)量詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08

最新評論