// package quark_float -- кварк вещественное package quark_float import ( "fmt" "strconv" . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_base" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val" ) // QFloat -- кварк вещественное type QFloat[M quark_val.CMod] struct { *quark_base.QBase[M, float64] } // NewQFloat -- создание фиксированного кварка вещественное func NewQFloat(val float64) *QFloat[quark_val.Fix] { optMass := quark_base.QBaseOptMass[quark_val.Fix, float64](8) optVal := quark_base.QBaseOptVal(val) sf := &QFloat[quark_val.Fix]{ QBase: quark_base.NewQBase(optMass, optVal), } return sf } // NewQFloatMut -- создание мутабельного кварка вещественное func NewQFloatMut(val float64) *QFloat[quark_val.Mut] { optMass := quark_base.QBaseOptMass[quark_val.Mut, float64](8) optVal := quark_base.QBaseOptValMut(val) sf := &QFloat[quark_val.Mut]{ QBase: quark_base.NewQBaseMut(optMass, optVal), } return sf } // Get -- возвращает хранимое значение func (sf *QFloat[M]) Get() float64 { return sf.Val().Get() } // Set -- устанавливает хранимое значение func Set(sf *QFloat[quark_val.Mut], val float64) { quark_val.Set(sf.Val(), val) } // FromStr -- устанавливает из строки func FromStr(sf *QFloat[quark_val.Mut], str string) { fVal, err := strconv.ParseFloat(str, 64) Hassert(err == nil, "QFloat.FromStr(): str=%q, err=\n\t%v", str, err) quark_val.Set(sf.Val(), fVal) } // ToStr -- конвертирует в строку func (sf *QFloat[M]) ToStr() string { return fmt.Sprint(sf.Get()) }