草庐IT

floating-point-conversion

全部标签

types - 为什么Go中有int但没有float?

在Go中,有int类型,取决于系统架构,它可能等同于int32或int64。我可以声明一个整数变量而不用担心它的大小:varxint为什么没有float类型,取决于我的系统架构,它相当于float32或float64?我希望我也可以这样做:varxfloat 最佳答案 float在release2011/01/20中被移除.您仍然可以使用shortvariabledeclaration:x:=0.但正如GOFAQ中所述:Forreasonsofportability,wedecidedtomakethingsclearandstra

go - 为什么这两个 float64 有不同的值?

考虑这两种情况:fmt.Println(912*0.01)fmt.Println(float64(912)*0.01)(GoPlaygroundlink)第二个打印9.120000000000001,其实没问题,Iunderstandwhythatishappening.但是,为什么第一行打印的是9.12,而末尾没有...01?Go是否将两个无类型常量相乘并在编译时简单地将它们替换为9.12字面量? 最佳答案 根据spec:Constantexpressionsarealwaysevaluatedexactly;intermedia

go - Go 源代码中提到的 "safe point functions"是什么?

在文件runtime/proc.go中的Gosourcecode,有很多评论提到安全点函数,似乎与垃圾收集安全的时间点有关。但是,我找不到这些函数的任何定义。什么是安全点函数,它们的用途是什么,这些函数有哪些示例? 最佳答案 这是我能挖掘到的关于这个话题的所有内容。我发现了一些关于Go的GC安全点的讨论here.看起来安全点(在Go实现中使用)实际上与安全点的传统定义相同:keypointswheretheGCcantrackwhatallvariablesandregistershold同一线程上的另一个用户提到GCfoldsth

type-conversion - Go - for 循环条件中的 uint32(不匹配的类型 int 和 uint32)

为了类型严格,我有时将我的尺寸存储为uint,而尺寸不能为负数。在for循环中使用时,我希望它看起来像这样:varsizeuint32=8fori:=0;i但是,我收到以下错误消息:invalidoperation:i重写for循环以指定如下类型:forvariuint32=0;i产生此编译器错误:syntaxerror:vardeclarationnotallowedinforinitializer解决这些错误的唯一方法是:fori:=0;uint32(i)或variuint32=0fori第一次是低效的,因为我在每次迭代中都进行转换,而第二次则不那么优雅。有没有更好的方法来做到这一

go - 如何在 Go 中测试 float 是否为整数?

我最初尝试过这个,但是没有为float64定义%运算符。funcmain(){varafloat64a=1.23ifa%1==0{fmt.Println("yay")}else{fmt.Println("youfail")}} 最佳答案 假设您的数字适合int64,您只需将浮点值与转换后的整数值进行比较,看看它们是否相同:ifa==float64(int64(a)){fmt.Println("yay")}else{fmt.Println("youfail")}否则你可以使用math.Trunc函数详解here,例如:ifa==mat

Golang 浮点精度 float32 与 float64

我写了一个程序来演示Go中的浮点错误:funcmain(){a:=float64(0.2)a+=0.1a-=0.3variintfori=0;a打印出来:After54iterations,a=1.000000e+00这与用C编写的同一程序的行为相匹配(使用double类型)但是,如果改为使用float32,程序就会陷入无限循环!如果您修改C程序以使用float而不是double,它会打印After27iterations,a=1.600000e+00为什么Go程序在使用float32时输出和C程序不一样? 最佳答案 使用math.

arrays - 在 GoLang 中将字节 slice "[]uint8"转换为 float64

我正在尝试将[]uint8字节slice转换为GoLang中的float64。我在网上找不到这个问题的解决方案。我已经看到先转换为字符串然后转换为float64的建议,但这似乎不起作用,它失去了它的值(value),我最终得到零。例子:metric.Value,_=strconv.ParseFloat(string(column.Value),64)而且它不起作用...... 最佳答案 例如,packagemainimport("encoding/binary""fmt""math")funcFloat64frombytes(byt

casting - 在 Go 中从 float32 转换为 int

我尝试了几种将float转换为int的方法,我想要的是截断float,所以我只得到整数部分。我正在使用x:=float32(3.1)y,_:=strconv.Atoi((strconv.Ftoa32(x,'f',0)))//ybecomes3但如果x为3.9,y将变为4,因为此函数将舍入float32而不是截断。有没有一种截断而不是舍入的方法?如果是这样,是否可以在不涉及字符串的情况下做到这一点?(就像在C中将float转换为int一样) 最佳答案 只需使用int():x:=float32(3.1)fmt.Println(int(x

go - 如何将字符串转换为 float

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与helpcenter中定义的范围内的编程无关。.关闭9年前。Improvethisquestionhttp://play.golang.org/p/7kR2uZlV5-这是我的Playground链接。我有一个数字数组,但在字符串中。我试图将它们转换为float,但它没有给我任何东西。它有什么问题?varnumbers[]float64for_,elem:=rangestr_numbers{i,err:=strconv.ParseFloat(elem,64)iferr!=nil{numb

go - 格式浮点 : convert float number to string

这个问题在这里已经有了答案:HowtoformatfloatingpointnumbersintoastringusingGo(2个回答)关闭9年前。http://golang.org/pkg/strconv/http://play.golang.org/p/4VNRgW8WoB如何将float转换为字符串格式?这是谷歌Playground,但没有得到预期的输出。(2e+07)我想得到“21312421.213123”packagemainimport"fmt"import"strconv"funcfloattostr(input_numfloat64)string{//toconve