strconv.ParseComplex în Go

Citește un număr complex dintr-un text de forma „3+4i” și îl scrie înapoi ca text „(3+4i)”.

Sintaxă
func ParseComplex(s string, bitSize int) (complex128, error)
func FormatComplex(c complex128, fmt byte, prec, bitSize int) string

Ce face strconv.ParseComplex

Go are numere complexe încorporate (complex128, complex64). strconv.ParseComplex(s, bitSize) citește forme ca "3+4i", "-2.5i", "7" sau "(1-1i)"; textul nu poate conține spații. bitSize este 128 pentru complex128 sau 64 pentru complex64.

strconv.FormatComplex(c, fmt, prec, bitSize) scrie numărul ca (a+bi); fmt și prec au același sens ca la FormatFloat, iar bitSize este 128 sau 64.

Parametri

Parametru Descriere
s La ParseComplex: textul.
c La FormatComplex: numărul complex.
fmt, prec Formatul și precizia, ca la FormatFloat.
bitSize 128 (complex128) sau 64 (complex64).

Ce returnează

ParseComplex: numărul și eroarea. FormatComplex: textul, între paranteze.

Exemple

Exemplul 1: Citire, calcul și afișare

package main

import (
	"fmt"
	"math/cmplx"
	"strconv"
)

func main() {
	z, err := strconv.ParseComplex("3+4i", 128)
	fmt.Println(z, err)
	fmt.Println("modul:", cmplx.Abs(z))
	fmt.Println(strconv.FormatComplex(z*z, 'f', 1, 128))

	_, err = strconv.ParseComplex("3 + 4i", 128)
	fmt.Println(err)
}

Rezultat

(3+4i) <nil>
modul: 5
(-7.0+24.0i)
strconv.ParseComplex: parsing "3 + 4i": invalid syntax

Greșeli frecvente

  • Pui spații în text ("3 + 4i"): dă eroare. Scrie "3+4i".
  • Folosești bitSize 64 crezând că înseamnă float64. La numere complexe, 64 înseamnă complex64 (două float32); pentru precizie completă folosește 128.

Comenzi înrudite

  • strconv.ParseFloat: Citește un număr cu zecimale dintr-un text (cu punct, nu cu virgulă) ca float64.
  • strconv.FormatFloat: Transformă un număr cu zecimale în text, cu formatul (‘f’, ‘e’, ‘g’) și numărul de zecimale dorite.