将string
转换为float64
时,float64
的小数部分丢失大量数字。
origVal := "0.00000628"
convVal, err := strconv.ParseFloat(origVal, 64)
if err == nil {
fmt.Printf("Original value: %s\nConverted value: %f\n", origVal, convVal)
}
输出:
Original value: 0.00000628
Converted value: 0.000006
该代码可在Go Playground上找到:https://play.golang.org/p/a8fH_JGug7l
我正在从API中提取数据。该API将浮点数字符串化。我将这些字符串化的数字转换为浮点数,因为我想对它们进行一些基本的算术运算。
我对Go相当陌生,所以如果答案很简单,我会道歉。
答案 0 :(得分:3)
问题不是字符串未正确转换,而是Printf
在默认情况下确实不会输出完整的小数部分(如果很长)。
以下代码与原始代码打印相同,但小数点后有10个数字:
origVal := "0.00000628"
convVal, err := strconv.ParseFloat(origVal, 64)
if err == nil && err2 ==nil {
fmt.Printf("Original value: %s\nConverted value: %.10f\n", origVal, convVal)
}
感谢@ usr2564301的快速回复!