// package quark_float -- кварк вещественное. package quark_float import ( "fmt" "strconv" mKh "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 -- возвращает хранимое значение. // /go:fix inline func (sf *QFloat[M]) Get() float64 { return sf.Val().Get() } // Set -- устанавливает хранимое значение. // /go:fix inline func Set(sf *QFloat[quark_val.Mut], val float64) { quark_val.Set(sf.Val(), val) } // FromStr -- устанавливает из строки. // //go:fix inline func FromStr(sf *QFloat[quark_val.Mut], str string) { fVal, err := strconv.ParseFloat(str, 64) mKh.Hassert(err == nil, "QFloat.FromStr(): str=%q, err=\n\t%v", str, err) quark_val.Set(sf.Val(), fVal) } // ToStr -- конвертирует в строку. // //go:fix inline func (sf *QFloat[M]) ToStr() string { return fmt.Sprint(sf.Get()) }