Sobes.tech
Junior — Middle

Kaip teisingai pasirinkti duomenų tipą, kad būtų galima saugoti kainą, atsižvelgiant į kopėjas sistemoje?

sobes.tech AI

Atsakymas iš AI

Norint saugoti vertę su centais, svarbu pasirinkti duomenų tipą, kuris užtikrina tikslumą ir išvengia suapvalinimo klaidų.

Dažnai naudojami šie požiūriai:

  • Sveikieji skaičiai — saugoti sumą mažiausiose vienetose (pvz., centuose). Vietoj 123,45 rublių, saugoti 12345 (sveikasis skaičius). Tai pašalina suapvalinimo klaidas atliekant skaičiavimus.

  • Fiksuotos tikslumo dešimtainiai tipai (pvz., decimal arba big.Rat Go kalboje) — leidžia dirbti su skaičiais, turinčiais nustatytą skaičių skaitmenų po kableliu.

Go kalboje finansiniams skaičiavimams dažnai naudojami sveikieji skaičiai arba išorinės bibliotekos, pvz., shopspring/decimal:

import "github.com/shopspring/decimal"

kaina := decimal.NewFromFloat(123.45)
// operacijos su tiksliomis dešimtainėmis aritmetikos funkcijomis

Taigi, pasirinkimas priklauso nuo tikslumo reikalavimų ir patogumo dirbant su piniginėmis reikšmėmis.