草庐IT

cpp_dec_float

全部标签

javascript - 识别字符串数字是否可以用 float (或 double )表示的最佳/最快方法是什么?

我正在尝试确定表示十进制数的给定字符串是否可以精确地表示为double。我特别热衷于javascript解决方案,但一切都很好(我可以移植)。我可以parseFloat、字符串化,然后查看该字符串是否与输入字符串匹配,但我想知道是否有更好/更快的方法来执行此操作。我认为对IEEE浮点标准有深入了解的人会有更好的方法来做到这一点,但那个人不是我。 最佳答案 任何具有不以5结尾的小数部分的数字都不能完全表示为二进制float。一个可表示的数字有一个小数部分,它是1/(2^N)的总和。任何此类总和都以数字5结尾。这并不意味着最后带有5的数

go - fmt.Printf ("%f\n",x) 将 Float64 舍入为 Float32,但 fmt.Println(x) 不会

我正在使用字典进行一些测试,为此,我以一种格式从数据库中打印出我想要的Float64值,以便将它们复制并粘贴到我的测试结构数组中,但是当我的测试失败时,我注意到这些值不同,但仅相差0.0000000000002然后,为了检查值,我在循环中编写了以下内容:fmt.Printf("%f\n",value)fmt.Println(value)我得到了以下值:702.200000702.19999999999985683.0900005683.089999999998975.300000975.3我检查了文档,没有看到任何表明Float64有特殊符号或%f将Float64替换为Float32的

performance - 为什么在 Go 中交换 []float64 的元素比在 Rust 中交换 Vec<f64> 的元素更快?

我有两个(等效的?)程序,一个在Go中,另一个在Rust中。平均执行时间为:开始~169ms使用rust~201ms开始packagemainimport("fmt""time")funcmain(){work:=[]float64{0.00,1.00}start:=time.Now()fori:=0;i使用rust我用--release编译usestd::time::Instant;fnmain(){letmutwork:Vec=Vec::new();work.push(0.00);work.push(1.00);letnow=Instant::now();for_xin1..100

go - 如何查找类型是否为 float64

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭3年前。Improvethisquestion我正在尝试查找变量是否为float64类型:packagemainimport("fmt")funcmain(){myvar:=12.34ifmyvar.(type)==float64{fmt.Println("Typeisfloat64.")}}但是,它不工作并给出以下错误:./rnFindType.go:6:10:useof.(type)outsidetypeswitch./rnFindTyp

go - 类型开关不检测 float32

packagemainimport"fmt"funcmain(){printType(4.0)}funcprintType(iinterface{}){switchi:=i.(type){casefloat32:fmt.Println("Thisisafloattype",i)}}出于某种原因,此代码未将4.0值检测为float32,但将其检测为float64-这是为什么呢?我在winx64机器上运行它。 最佳答案 Forsomereasonthiscodedoesnotdetect4.0valueasfloat32butitdet

go - 将 float 打印为字符串时的精度损失

关闭。这个问题是notreproducibleorwascausedbytypos.它目前不接受答案。这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助future的读者。关闭4年前。Improvethisquestion如果我将int数字存储到一个结构中,然后对它们应用除法,我就碰巧遇到了这种情况。精度会丢失。funcmain(){varx=94911151vary=94911150//Ifweusethevaluetocalculatedivisiondirectly,itwouldbefinevarresult

go - 如何获得最小的非零float64?

数学库似乎没有用于float64的Min函数。我如何获得最小的非零float64? 最佳答案 正如@oliver-charlesworth所说:packagemainimport("fmt""math")funcmain(){fmt.Printf("%.12G",math.SmallestNonzeroFloat64)}https://play.golang.org/p/kRuIhalODGa输出:4.94065645841E-324 关于go-如何获得最小的非零float64?,我们在

go - 将一片字符串转换为一片 float32

在我的程序中,我通过bufio扫描器将一串数字(例如:5443.3-43.2)添加到slice中。然后我想将每个空间的slice拆分成另一个slice以将其转换为float32。这是我所拥有的:varnewSlice[]float32sliceScan=scanner.Text()s:=strings.Split(sliceScan,"")fori:=0;i当我运行它时,我得到了这个错误:syntaxerror:unexpectedsattheendofstatement 最佳答案 您可以使用strconv.ParseFloat:v

math - 将 uint8 转为 float32

我正在尝试学习Go并研究降雨强度工具。对于此工具,我必须进行如下计算:varintensityfloat32intensity=10^((value−109)÷32)值是一个uint8,范围从0到255。强度变量是一个float。但是,Go告诉我cannotuse10^(value-109)/32(typeuint8)astypefloat32inassignment我该如何解决这个问题? 最佳答案 Go中没有÷运算符,^是按位异或,需要使用mathPow函数包Go对类型转换非常严格,因此在很多情况下它不允许隐式类型转换(因此无符号

go - 如何检查值是否为 float

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭4年前。Improvethisquestion我想检查我传递的值是否为float。我有一段代码可以检查它是某个字符串还是float。如果两者都不是,则报错。这是代码:ifsensorData.Passport.Geolocation.Latitude!="gps"&&sensorData.Passp