Prawidłowe formatowanie liczb może być trudnym zadaniem. A formatowanie walut wiąże się z dodatkowymi wyzwaniami związanymi z lokalizacją. Na szczęście Go ma funkcje, które mogą pomóc.
Standardowa biblioteka Go udostępnia różne narzędzia do formatowania liczb. Pakiet strconv zawiera funkcje do analizowania i konwertowania liczb na iz łańcuchów.
Pakiet strconv
The strconv package to potężne narzędzie do konwersji między liczbami a ciągami znaków. Możesz go używać do pracy z liczbami w różnych formatach.
strconv jest częścią standardowej biblioteki, więc jest odpowiedni dla wielu z nich podstawowe pojęcia Go, które powinieneś znać. Oto jak możesz to zaimportować:
import"strconv"
Pakiet udostępnia funkcje do konwersji liczb na iz napisów w różnych formatach. Zawiera funkcje do pracy z liczbami całkowitymi i liczbami zmiennoprzecinkowymi.
strconv może również obsługiwać konwersję do iz formatów binarnych, ósemkowych i szesnastkowych, a także notację naukową.
Formatowanie liczb całkowitych w Go
Pakiet strconv Itoa Funkcja zapewnia funkcjonalność konwersji liczb całkowitych na łańcuchy. The Itoa funkcja przyjmuje liczbę całkowitą i zwraca ciąg reprezentujący tę liczbę całkowitą.
import (
"fmt"
"strconv"
)
funkcjagłówny() {
liczby całkowite := 3043
stringVersion := strconv. Itoa (liczby całkowite)
fmt. Println (wersja ciągu) // Dane wyjściowe: „3043”
}
Ten kod konwertuje wartość całkowitą na ciąg przy użyciu Itoa. Następnie wyprowadza wynikowy ciąg do konsoli za pomocą fmt pakiet.
Dodatkowo Itoa funkcja strconv zapewnia:
- FormatujInt do formatowania liczb całkowitych jako łańcuchów o podanej podstawie
- DołączInt do dołączania liczb całkowitych w postaci łańcucha do wycinka bajtów.
Oto jak możesz użyć FormatujInt funkcja formatująca liczbę całkowitą:
import (
"fmt"
"strconv"
)
funkcjagłówny() {
liczby całkowite := 12345
ciągi := strconv. FormatInt(int64(liczby całkowite), 10)
fmt. Println (ciągi znaków) // Dane wyjściowe: „12345”
}
Ten kod używa int64() aby przekonwertować oryginalną wartość na 64-bitową liczbę całkowitą. Następnie przekazuje wynik do FormatujInt, wraz z podstawą do przeliczenia, w tym przypadku 10. FormatInt zwraca ciąg, który Drukuj ln następnie wysyła do konsoli.
The DołączInt funkcja pobiera kawałek bajtu, an int64 wartość i podstawa.
import (
"fmt"
"strconv"
)
funkcjagłówny() {
liczby całkowite := 12345
byteSlice := robić([]bajt, 0, 20)
byteSlice = strconv. AppendInt (byteSlice, int64(liczby całkowite), 10)
fmt. println(strunowy(fragment bajtu)) // Dane wyjściowe: „12345”
}
Zauważ, że AppendInt otrzymuje wycinek bajtów do dołączenia i zwraca wynikowy wycinek bajtów. W tym przypadku początkowy wycinek bajtów jest pusty, ale ma pojemność 20 do przechowywania wynikowej reprezentacji ciągu liczb całkowitych.
Przetwarzanie łańcuchów jako liczb całkowitych
The Atoi funkcja konwertuje ciągi znaków na liczby całkowite. Przyjmuje ciąg jako dane wejściowe i zwraca reprezentację całkowitą tego ciągu wraz z typem błędu.
Oto jak możesz użyć Atoi funkcja konwersji łańcucha na liczbę całkowitą:
import (
"fmt"
"strconv"
)funkcjagłówny() {
ciągi := "123"
liczby całkowite, błąd := strconv. Atoi (ciągi)Jeśli błąd!= zero {
fmt. Println (błąd)
}
fmt. Println (liczby całkowite)
}
Program wyprowadza wartość całkowitą do konsoli:
Możesz także skorzystać z tzw ParseUint funkcja, która analizuje reprezentację łańcuchową liczb całkowitych bez znaku.
pakiet główny
import (
"fmt"
"strconv"
)funkcjagłówny() {
// przeanalizuj ciąg jako liczbę podstawową 10 i 0-bitową liczbę całkowitą bez znaku
wartość, błąd := strconv. ParseUint("12345", 10, 0)
Jeśli błąd!= zero {
fmt. Println (błąd)
} w przeciwnym razie {
fmt. Println (val) // Dane wyjściowe: 12345
}
}
The ParseUint funkcja analizuje ciąg znaków 12345 jako liczbę całkowitą bez znaku o podstawie dziesiątej. Rozmiar 0-bitowy zapewnia zwrócenie standardowego typu int. Zwraca przeanalizowaną wartość i błąd.
Możesz użyć ParseFloat funkcja do analizowania łańcucha reprezentującego liczbę zmiennoprzecinkową.
import (
"fmt"
"strconv"
)funkcjagłówny() {
// parsuj ciąg jako 64-bitową liczbę zmiennoprzecinkową
wartość, błąd := strconv. ParseFloat("3.14", 64)
Jeśli błąd!= zero {
fmt. Println (błąd)
} w przeciwnym razie {
fmt. Println (val) // Dane wyjściowe: 3.14
}
}
The ParseFloat Funkcja analizuje ciąg jako 64-bitową liczbę zmiennoprzecinkową i zwraca ciąg oraz typ błędu.
Formatowanie walut w Go
Tworzenie aplikacji współpracującej z walutami wymaga formatowania i analizowania liczb. Praca z różnymi walutami może być wyzwaniem, ale strconv I księgowość packages mogą pomóc w ich sformatowaniu.
Oto jak przetworzyć ciąg znaków waluty na liczbę zmiennoprzecinkową dla operacji na walucie:
import (
"fmt"
"strconv"
)funkcjagłówny() {
// Łańcuch waluty do przeanalizowania
walutaStr := "$1,234.56"// Usuń symbol waluty i zamień na liczbę zmiennoprzecinkową
floatVal, błąd:= strconv. ParseFloat (currencyStr[1:], 64)Jeśli błąd!= zero {
fmt. Println (błąd)
powrót
}
// Wydrukuj przeanalizowaną wartość zmiennoprzecinkową
fmt. Println (floatVal) // Dane wyjściowe: 1234,56
}
The walutaStr zmienna to ciąg reprezentujący wartość waluty ze znakiem dolara jako symbolem. Program wykorzystuje tzw ParseFloat funkcja do parsowania łańcucha waluty, zaczynając od drugiego elementu (po symbolu waluty).
Konwencjonalnie najlepiej jest unikać używania wartości zmiennoprzecinkowych dla walut, ponieważ mogą one spowodować błędne obliczenia i błędy w produkcji.
Alternatywnie możesz użyć pakietu innej firmy, takiego jak księgowość który ma funkcjonalność formatowania i analizowania walut.
Uruchom to polecenie terminala w katalogu projektu, aby zainstalować pakiet księgowy:
przejdź do https://github.com/leekchan/accounting
Rozpocznij od utworzenia instancji Rachunkowość struktura. Przypomnij sobie, że struktury są jednym z Podstawowe obiektowe funkcje Go, podobnie jak zajęcia z innych języków. Instancję Accounting można zainicjować między innymi symbolem waluty i precyzyjną wartością.
Możesz użyć Formatuj pieniądze funkcja pakietu księgowego do formatowania liczb na waluty.
pakiet główny
import (
"fmt"
„matematyka / duży”"github.com/leekchan/accounting"
)
funkcjagłówny() {
ac:= rachunkowość. Rachunkowość{Symbol: "$", Precyzja: 2}
fmt. Println (ac. Formatuj pieniądze (123456789.213123))
fmt. Println (ac. Formatuj pieniądze (12345678))
fmt. Println (ac. Formatuj pieniądze (duże. NowySzczur(77777777, 3)))
fmt. Println (ac. Formatuj pieniądze (duże. NowySzczur(-77777777, 3)))
fmt. Println (ac. Formatuj pieniądzeBigFloat (duże. NewFloat(123456789.213123)))
}
The ak zmienna jest instancją rozliczeniową. Ten program formatuje i drukuje wartości pieniężne przy użyciu formatu Formatuj pieniądze I Formatuj pieniądzeBigFloat metody instancji księgowej. The NowySzczur funkcja od duży package tworzy liczbę wymierną, mając licznik i mianownik. The NewFloat pomaga reprezentować duże liczby zmiennoprzecinkowe.
Go może pomóc w sformatowaniu innych typów
Go zapewnia wiele funkcji do konwersji liczb i walut w prosty sposób.
Język oferuje również potężny system formatowania ciągów znaków. Inspirowana językiem C funkcja Sprintf pakietu fmt umożliwia tworzenie sformatowanych łańcuchów przy użyciu specjalnej składni symboli zastępczych. Możesz użyć Sprintf do tworzenia ciągów zawierających liczby i wartości walutowe, co ułatwia tworzenie czytelnych dla człowieka danych wyjściowych.