一、用途與基本使用
strconv.formatfloat主要用於將浮點數轉換為字元串。它的基本用法如下:
import "strconv" func main() { f := 3.1415926 str := strconv.FormatFloat(f, 'f', 2, 64) fmt.Println(str) //輸出3.14 }
上述代碼的含義是將浮點數f保留小數點後兩位,並以字元串形式返回結果。
其中,第2個參數’f’表示要輸出浮點數的格式,也可以使用’e’表示科學記數法,使用’g’表示自動選擇要使用的格式。第3個參數2表示保留小數點後2位,第4個參數64表示轉換後的字元串的精度。
二、格式化輸出
除了上述基本用法,strconv.formatfloat還支持使用格式化字元串輸出結果,例如:
import "strconv" func main() { f := 1234.5678 str := strconv.FormatFloat(f, 'f', -1, 64) fmt.Printf("%s\n", str) //輸出1234.5678 fmt.Printf("%.2f\n", f) //輸出1234.57 fmt.Printf("%.2e\n", f) //輸出1.23e+03 fmt.Printf("%10.2f\n", f) //輸出 1234.57 fmt.Printf("%-10.2f\n", f) //輸出1234.57 }
上述代碼中,使用了不同格式的格式化字元串輸出結果。其中,%.2f表示保留小數點後2位浮點數,%.2e表示採用科學計數法輸出,%10.2f表示保留小數點後2位,寬度為10個字元,右對齊,不足部分用空格填充,%-10.2f表示保留小數點後2位,寬度為10個字元,左對齊,不足部分用空格填充。
三、進位轉換
strconv.formatfloat還可以用於將浮點數轉換為不同進位的字元串,例如以下示例代碼:
import "strconv" func main() { f := 1234.5678 str := strconv.FormatFloat(f, 'f', -1, 64) fmt.Printf("%x\n", str) //輸出313233342e35363738 fmt.Printf("%o\n", str) //輸出6162636465662e35363738 fmt.Printf("%b\n", str) //輸出001100010011001000110011001101000011.001101010110011110001110 }
上述代碼中,使用%x將字元串str以十六進位表示輸出,%o將字元串以八進位表示輸出,%b將字元串以二進位表示輸出。
四、異常處理
在使用strconv.formatfloat時,也要注意異常處理。例如當保留小數點位數超過了浮點數能表示的範圍,會返回「Infinity」字元串。示例代碼如下:
import "strconv" func main() { f := 1.0/0.0 str := strconv.FormatFloat(f, 'f', 2, 64) fmt.Println(str) //輸出Inf }
上述代碼中,f的值為無限大,因此使用FormatFloat將其轉換為字元串時返回「Inf」字元串。
另外,如果嘗試將NaN值轉換為字元串,會返回「NaN」字元串,示例代碼如下:
import "strconv" import "math" func main() { f := math.Sqrt(-1) str := strconv.FormatFloat(f, 'f', 2, 64) fmt.Println(str) //輸出NaN }
上述代碼中,f的值為NaN,因此使用FormatFloat將其轉換為字元串時返回「NaN」字元串。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/307414.html