本文主要是介绍如何处理Golang中int64类型变为科学计数法?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景
这周时候在处理订单消息传递的时候,发现定义的orderID大多数时候是正常的(例如:1152921570135310348)偶现科学计数法(例如:1.1529215701353103e+18)。
传参的结构是这样的:map[string]interface{}
赋值:data[“id”] = 1152921570135310348
后面就开始调接口,记录日志等一系列操作。查了一会儿发现正常流程是不会导致变成科学计数法的。
后面偶然发现原来的一个通过mq补偿的逻辑导致的。
主要原因是因为走了json.Marshal()导致的。
解决
这里提供两种方式解决这个问题。
1.赋值的时候用string类型
func main() {data := make(map[string]interface{})// 关键是这里。主要想表达,用字符串就没问题data["id"] = "1152921570135310348"dataJson,_ := json.Marshal(data)fmt.Println(string(dataJson))// 解json var dataDecode map[string]interface{}v,_:=strconv.ParseFloat("1000000", 64)fmt.Println(v)_ = json.Unmarshal(dataJson, &dataDecode)fmt.Println(dataDecode)
}
这篇关于如何处理Golang中int64类型变为科学计数法?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!