本文整理汇总了Golang中math/big.Float.Parse方法的典型用法代码示例。如果您正苦于以下问题:Golang Float.Parse方法的具体用法?Golang Float.Parse怎么用?Golang Float.Parse使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类math/big.Float
的用法示例。
在下文中一共展示了Float.Parse方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestLog
func TestLog(t *testing.T) {
for _, test := range []struct {
z string
want string
}{
// 350 decimal digits are enough to give us up to 1000 binary digits
{"0.5", "-0.69314718055994530941723212145817656807550013436025525412068000949339362196969471560586332699641868754200148102057068573368552023575813055703267075163507596193072757082837143519030703862389167347112335011536449795523912047517268157493206515552473413952588295045300709532636664265410423915781495204374043038550080194417064167151864471283996817178454696"},
{"0.25", "-1.3862943611198906188344642429163531361510002687205105082413600189867872439393894312117266539928373750840029620411413714673710404715162611140653415032701519238614551416567428703806140772477833469422467002307289959104782409503453631498641303110494682790517659009060141906527332853082084783156299040874808607710016038883412833430372894256799363435690939"},
{"0.0125", "-4.3820266346738816122696878190588939118276018917095387383953679294477534755864366270535871860788543609679722271039983058344660861723571984277642996240040095752750899208106689864147210106979082189417635556550588715983462075888842670124944153533207460860520530946333864410280342429017041970928492563533263928706772062013203262792640026952942261381891629"},
{"1", "0.0"},
{"2", "0.69314718055994530941723212145817656807550013436025525412068000949339362196969471560586332699641868754200148102057068573368552023575813055703267075163507596193072757082837143519030703862389167347112335011536449795523912047517268157493206515552473413952588295045300709532636664265410423915781495204374043038550080194417064167151864471283996817178454696"},
{"10", "2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220"},
{"4096", "8.3177661667193437130067854574981188169060016123230630494481601139207234636363365872703599239570242505040177722468482288042262428290975666843920490196209115431687308499404572222836844634867000816534802013843739754628694457020721788991847818662968096743105954054360851439163997118492508698937794245248851646260096233300477000582237365540796180614145634"},
{"1e5", "11.512925464970228420089957273421821038005507443143864880166639504837863048386762401179986025447991491709838920211431243167047627325414033783331436845493908447414536041627773404218999474131165992641967526544826888663144230816831111438491099433732718337372021216371825775244671574696957398097022001110525508570874001844042006323540342783871608114177610"},
} {
for _, prec := range []uint{24, 53, 64, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000} {
want := new(big.Float).SetPrec(prec)
want.Parse(test.want, 10)
z := new(big.Float).SetPrec(prec)
z.Parse(test.z, 10)
x := bigfloat.Log(z)
if x.Cmp(want) != 0 {
t.Errorf("prec = %d, Log(%v) =\ngot %g;\n want %g", prec, test.z, x, want)
}
}
}
}
示例2: Decode
func (sed StringEncoderDecoder) Decode(r io.Reader, n *big.Float) error {
n.SetFloat64(0)
n.SetPrec(ENCODER_DECODER_PREC)
buf := make([]byte, 256)
if _, err := r.Read(buf); err != nil {
return err
}
_, _, err := n.Parse(string(buf), 10)
return err
}
示例3: TestPi
func TestPi(t *testing.T) {
enablePiCache = false
piStr := "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153644"
for _, prec := range []uint{24, 53, 64, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000} {
want := new(big.Float).SetPrec(prec)
want.Parse(piStr, 10)
z := pi(prec)
if z.Cmp(want) != 0 {
t.Errorf("Pi(%d) =\ngot %g;\nwant %g", prec, z, want)
}
}
enablePiCache = true
}
示例4: finishReadingReal
// finishReadingReal tries parsing a float64, then a big.Float, as required by the
// size of the value.
func finishReadingReal(xmlDecoder *xml.Decoder) (interface{}, error) {
raw, err := readCharDataUntilEnd(xmlDecoder, realStartElement.End())
if err != nil {
return nil, err
}
var value interface{}
value, err = strconv.ParseFloat(raw, 64)
if err == nil {
return value, nil
} else if !isErrOutOfRange(err) {
return nil, err
}
var bigValue big.Float
if _, _, err := bigValue.Parse(raw, 10); err != nil {
return nil, err
}
return bigValue, nil
}
示例5: TestPowIntegers
func TestPowIntegers(t *testing.T) {
for _, test := range []struct {
z, w string
want string
}{
{"2", "5", "32"},
{"2", "10", "1024"},
{"2", "64", "18446744073709551616"},
{"2", "-5", "0.03125"},
{"2", "-10", "0.0009765625"},
{"2", "-64", "5.42101086242752217003726400434970855712890625e-20"},
{"1.5", "8", "25.62890625"},
} {
for _, prec := range []uint{24, 53, 64, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000} {
want := new(big.Float).SetPrec(prec)
want.Parse(test.want, 10)
z := new(big.Float).SetPrec(prec)
z.Parse(test.z, 10)
w := new(big.Float).SetPrec(prec)
w.Parse(test.w, 10)
x := bigfloat.Pow(z, w)
if x.Cmp(want) != 0 {
t.Errorf("prec = %d, Pow(%v, %v) =\ngot %g;\nwant %g", prec, test.z, test.w, x, want)
}
}
}
}
示例6: TestPow
func TestPow(t *testing.T) {
for _, test := range []struct {
z, w string
want string
}{
{"1.5", "1.5", "1.8371173070873835736479630560294185439744606104925025963245194254382202830929862699048945748284801761139459509199606418436441490948783180062193379634279589146216845606457574284357225789531838276676109830092400181402243325144092030253566067045309391758849310432709781082027026621306513787250611923558785098172755465204952231278685708006003328040156619"},
{"2", "1.5", "2.8284271247461900976033774484193961571393437507538961463533594759814649569242140777007750686552831454700276924618245940498496721117014744252882429941998716628264453318550111855115999010023055641211429402191199432119405490691937240294570348372817783972191046584609686174286429016795252072559905028159793745067930926636176592812412305167047901094915006"},
{"1.5", "-1.5", "0.54433105395181735515495201660130919821465499570148225076282057050021341721273667256441320735658671884857657805035870869441308121329727940925017421138606190062864727722837257138836224561575817116077362459533037574525165407834346756306862420874990790396590549430251203206006004803871151962224035329063066957548905082088747351936846542240009860859723315"},
{"2", "-1.5", "0.35355339059327376220042218105242451964241796884423701829416993449768311961552675971259688358191039318375346155772807425623120901396268430316103037427498395785330566648187639818894998762528819551514286752738999290149256863364921550368212935466022229965238808230762107717858036270994065090699881285199742181334913658295220741015515381458809876368643757"},
} {
for _, prec := range []uint{24, 53, 64, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000} {
want := new(big.Float).SetPrec(prec)
want.Parse(test.want, 10)
z := new(big.Float).SetPrec(prec)
z.Parse(test.z, 10)
w := new(big.Float).SetPrec(prec)
w.Parse(test.w, 10)
x := bigfloat.Pow(z, w)
if x.Cmp(want) != 0 {
t.Errorf("prec = %d, Pow(%v, %v) =\ngot %g;\nwant %g", prec, test.z, test.w, x, want)
}
}
}
}
示例7: TestAgm
func TestAgm(t *testing.T) {
for _, test := range []struct {
a, b string
want string
}{
// 350 decimal digits are enough to give us up to 1000 binary digits
{"1", "2", "1.4567910310469068691864323832650819749738639432213055907941723832679264545802509002574737128184484443281894018160367999355762430743401245116912132499522793768970211976726893728266666782707432902072384564600963133367494416649516400826932239086263376738382410254887262645136590660408875885100466728130947439789355129117201754471869564160356411130706061"},
{"1", "10", "4.2504070949322748617281643183731348667984678641901928596701476622237553127409037845252854607876171790458817135897668652366410690187825866854343005714304399718866701345600268795095037823053677248108795697049522041225723229732458947507697835936406527028150257238518982793084569470658500853106997941082919334694146843915361847332301248942222685517896377"},
{"1", "0.125", "0.45196952219967034359164911331276507645541557018306954112635037493237190371123433961098897571407153216488726488616781446636283304514042965741376539315003644325377859387794608118242990700589889155408232061013871480906595147189700268152276449512798584772002737950386745259435790965051247641106770187776231088478906739003673011639874297764052324720923824"},
{"1", "0.00390625", "0.2266172673264813935990249059047521131153183423554951008357647589399579243281007098800682366778894106068183449922373565084840603788091294841822891406755449218057751291845474188560350241555526734834267320629182988862200822134426714354129001630331838172767684623648755579758508073234772093745831056731263684472818466567279847347734121500617411676068370"},
{"1", "0.0001220703125", "0.15107867088555894565277006051956059212554039802503247524478909254186086852737399490629222674071181480492157167137547694132610166031526264375084434300568336411139925857454913414480542768807718797335060713475211709310835676172131569048902323084439330888400622327072954342544508199547787750415198261456314278054748992781108231991187512975110547417178045"},
} {
for _, prec := range []uint{24, 53, 64, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000} {
want := new(big.Float).SetPrec(prec)
want.Parse(test.want, 10)
a := new(big.Float).SetPrec(prec)
a.Parse(test.a, 10)
b := new(big.Float).SetPrec(prec)
b.Parse(test.b, 10)
z := agm(a, b)
if z.Cmp(want) != 0 {
t.Errorf("prec = %d, Agm(%v, %v) =\ngot %g;\nwant %g", prec, test.a, test.b, z, want)
}
}
}
}
示例8: TestExp
func TestExp(t *testing.T) {
for _, test := range []struct {
z string
want string
}{
{"0", "1"},
{"1", "2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966290435729003342952605956307381323286279434907632338298807531952510190115738341879307021540891499348841675092447614606680822648001684774118537423454424371075390777449920695517027618386062613313845830007520449338265602976"},
{"1.5", "4.4816890703380648226020554601192758190057498683696670567726500827859366744667137729810538313824533913886163506518301957689627464772204086069617596449736935381785298966216866555101351015468252930697652168582207145843214628870201383138594206299440366192845735003904511744769330306157776861818063974846024442278949433305735015582659896397844432731673273"},
{"2", "7.3890560989306502272304274605750078131803155705518473240871278225225737960790577633843124850791217947737531612654788661238846036927812733744783922133980777749001228956074107537023913309475506820865818202696478682084042209822552348757424625414146799281293318880707633010193378997407299869600953033075153208188236846947930299135587714456831239232727646"},
{"3", "20.085536923187667740928529654581717896987907838554150144378934229698845878091973731204497160253017702153607615851949002881811012479353506690232621784477250503945677100066077851812229047884383940258152534709352622981465538424555697733515108150118404754933838497843177676070913772862491787349396037822793717687131254060597553426640826030948663920216259"},
{"-1", "0.36787944117144232159552377016146086744581113103176783450783680169746149574489980335714727434591964374662732527684399520824697579279012900862665358949409878309219436737733811504863899112514561634498771997868447595793974730254989249545323936620796481051464752061229422308916492656660036507457728370553285373838810680478761195682989345449735073931859922"},
{"-2", "0.13533528323661269189399949497248440340763154590957588146815887265407337410148768993709812249065704875507728718963355221244934687189285303815889513499670600559125022755868258230483842057584538468003599408344602481287135375015664353399593608501390049529421705857601948571122397095990883595090571764528251279379538022237440385068269131295459365886804367"},
{"-3", "0.049787068367863942979342415650061776631699592188423215567627727606060667730199550154054244236633344526401328650893681950864643386736174297123488422626590132549710257089250891729183705544267766471294627261313755158051249249208013335774449487985072339959233419058693861230319791977014791562486437888837044087835498513120050395020976909328170160274676519"},
{"10", "22026.465794806716516957900645284244366353512618556781074235426355225202818570792575199120968164525895451555501092457836652423291606522895166222480137728972873485577837847275195480610095881417055888657927317236168401192698035170264925041101757502556764762696107543817931960834044404934236682455357614946828619042431465132389556031319229262768101604495"},
{"100", "2.6881171418161354484126255515800135873611118773741922415191608615280287034909564914158871097219845710811670879190576068697597709761868233548459638929871966089629133626120029380957276534032962269865668016917743514451846065162804442237756762296960284731911402129862281040057911593878790384974173340084912432828126815454426051808828625966509400466909062e43"},
{"1000", "1.9700711140170469938888793522433231253169379853238457899528029913850638507824411934749780765630268899309638179875202269359829817305446128992326278366015282523232053516958456675619227156760278807142246682631400685516850865349794166031604536781793809290529972858013286994585647028653437590045656435558915622042232026051882611228863835837224872472521451e434"},
{"-10", "0.000045399929762484851535591515560550610237918088866564969259071305650999421614302281652525004545947782321708055089686028492945199117244520388837183347709414567560990909217007363970181059501783900762968517787030908824365171548448722293652332416020501168264360305604941570107729975354408079403994232932138270780520042710498960354486166066837009201707573209"},
{"-100", "3.7200759760208359629596958038631183373588922923767819671206138766632904758958157181571187786422814966019356176423110698002479856420525356002661856882839075574388191160228448691497585855102816611741608772370701345082175755257496876380478927279529400619796226477050521097935092405571614981699373980650794385017392666116669084820355852767349264735965334e-44"},
{"-1000", "5.0759588975494567652918094795743369193055992828928373618323938454105405429748191756796621690465428678636671068310652851135787934480190632251259072300213915638091771495398351108574919194309548129952421441572726108465407163812260104924530270737073247546217081943180823516857873407345613076984468096760005536701904004361380296144254899617340297251706670e-435"},
} {
for _, prec := range []uint{24, 53, 64, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000} {
want := new(big.Float).SetPrec(prec)
want.Parse(test.want, 10)
z := new(big.Float).SetPrec(prec)
z.Parse(test.z, 10)
x := bigfloat.Exp(z)
if x.Cmp(want) != 0 {
t.Errorf("prec = %d, Exp(%v) =\ngot %g;\nwant %g", prec, test.z, x, want)
}
}
}
}
示例9: readNumber
func (l *Lexer) readNumber() (Token, error) {
var terr, err error
kind := TIntLit
l.pushReadCapture(true)
defer l.popReadCapture()
if l.last == '0' {
switch {
case l.readOneOf(isHexSep):
var n int
n, err = l.readWhile(false, isHex)
kind = THexLit
if n == 0 {
terr = errMalformedHex
}
goto done
case l.readOneOf(isBinSep):
var n int
n, err = l.readWhile(false, isBin)
kind = TBinLit
if n == 0 {
terr = errMalformedBin
}
goto done
case l.readOneOf(isPeriod):
goto parseDecimal
default:
// Try octal
var n int
n, err = l.readWhile(false, isOct)
if n > 0 {
kind = TOctLit
}
}
} else if l.last == '.' {
goto parseDecimal
}
_, err = l.readWhile(false, isDec)
if err == io.EOF {
err = nil
}
if err != nil {
goto done
}
if !l.readOneOf(isPeriod) {
goto checkExponent
}
parseDecimal:
kind = TFloatLit
{
var decLen int
decLen, err = l.readWhile(false, isDec)
if decLen == 0 || err != nil {
terr = fmt.Errorf("Lexer: readNumber: expected digits following decimal point")
goto done
}
}
checkExponent:
{
if !l.readOneOf(isExp) {
goto done
}
if kind != TFloatLit && kind != TIntLit {
kind = TIntLit
}
// We actually don't care if one of these is read.
if l.readOneOf(isSign) && l.last == '-' {
kind = TFloatLit
}
kind++
var expLength int
expLength, err = l.readWhile(false, isDec)
if expLength == 0 {
terr = fmt.Errorf("Lexer: readNumber: expected digits for exponent")
goto done
}
}
done:
if err == io.EOF {
err = nil
}
if terr != nil {
kind = TError
}
tok := l.token(kind, true, terr)
if kind == TFloatLit || kind == TFloatExpLit {
var f big.Float
_, _, terr = f.Parse(tok.String(), 10)
} else {
//.........这里部分代码省略.........