根据所需格式在 go lang 中将 float 转换为 string。

我在 go 中有 4 个浮点值(startLat,startLon,endLat,endLon)。我想将这些值附加(替换)到下面的字符串中:

var etaString = []byte(`{"start_latitude":"` + startLat + `","start_longitude":"` + startLon + `","end_latitude":"` + endLat + `","end_longitude":"` + endLon }`)

在这样做之前,我必须将它们类型转换为字符串。

startLat := strconv.FormatFloat(o.Coordinate.Longitude, 'g', 1, 64)

但是,当我这样做时,我得到这些参数的值,"4e+01 -1e+02 4e+01 -1e+02" 但我只想要这样的东西: "64.2345" 。

我怎样才能做到这一点?TIA :)


饮歌长啸
浏览 155回答 2
2回答

HUH函数

包 strconv导入“strconv”> func FormatFloatfunc FormatFloat(f float64, fmt byte, prec, bitSize int) stringFormatFloat 根据格式 fmt 和 precision prec 将浮点数 f 转换为字符串。假设原始数据是从 bitSize 位的浮点值(float32 为 32,float64 为 64)获得的,它对结果进行四舍五入。格式 fmt 是 'b'(-ddddp±ddd,二进制指数)、'e'(-d.dddde±dd,十进制指数)、'E'(-d.ddddE±dd,十进制指数)之一)、'f'(-ddd.dddd,无指数)、'g'('e' 表示大指数,否则为 'f')或 'G'('E' 表示大指数,否则为 'f')。精度 prec 控制由 'e'、'E'、'f'、'g' 和 'G' 格式打印的位数(不包括指数)。对于“e”、“E”和“f”,它是小数点后的位数。对于“g”和“G”,它是总位数。特殊精度 -1 使用所需的最小位数,以便 ParseFloat 将准确返回 f。使用的精确度-1,不是1。使用 , 的格式f,不要g避免大指数的指数形式(请参阅HectorJ 的评论)。startLat := strconv.FormatFloat(o.Coordinate.Longitude, 'f', -1, 64)例如,package mainimport (    "fmt"    "strconv")func main() {    f := 64.2345    s := strconv.FormatFloat(f, 'g', 1, 64)    fmt.Println(s)    s = strconv.FormatFloat(f, 'f', -1, 64)    fmt.Println(s)}输出:6e+0164.2345

拉风的咖菲猫

其他一些选择:package mainimport "fmt"func main() {   n := 64.2345   { // example 1      s := fmt.Sprint(n)      fmt.Println(s == "64.2345")   }   { // example 2      s := fmt.Sprintf("%v", n)      fmt.Println(s == "64.2345")   }   { // example 3      s := fmt.Sprintf("%g", n)      fmt.Println(s == "64.2345")   }}https://golang.org/pkg/fmt#Sprinthttps://golang.org/pkg/fmt#Sprintf
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go