草庐IT

floating-point-conversion

全部标签

go - 验证 int 和 float64 的 reflect.Type 的其他方法

在golang中,JSON消息中的数字总是被解析成float64。为了检测它是否真的是整数,我使用reflect.TypeOf()来检查它的类型。不幸的是,没有代表reflect.Type的常量。intType:=reflect.TypeOf(0)floatType:=reflect.TypeOf(0.0)myType:=reflect.TypeOf(myVar)ifmyType==intType{//dosomething}是否有更优雅的解决方案而不是使用0或0.0来获取reflect.Type? 最佳答案 您也可以使用Value

type-conversion - 如何在 go 中使用带有范围的自定义 int 类型?

我有typeDocIdintfuncfoo(documents[]String){fori:=rangedocuments{id:=DocId(i)...}}如何去掉显式转换行?DocIds意味着是索引单个文档的类型。我想要的更像是:funcfoo(documents[]String){forid:=rangedocuments{...//idgetsusedastheDocIdthatitdamnwell*IS*}}当我尝试将范围内的id用作DocId时,即使DocId是一个int,也会出现“无效操作:...(不匹配的int和DocId类型)”。 最佳答案

go - 如何连接字符串和 float64?

我正在尝试解决这个问题:http://tour.golang.org/#58这是我做的;#importsomittedtypeErrNegativeSqrtfloat64func(eErrNegativeSqrt)Error()string{return"CannotSqrtnegativenumber:"+string(e)}funcSqrt(ffloat64)(float64,error){iff我也尝试过e.String()和e.string()但它们都不起作用... 最佳答案 尝试使用fmt包import"fmt"...re

performance - 迄今为止的 CSV 和 float

我目前正在编写一个小程序,将CSV文件转换为用于进一步处理的结构。csv行看起来像这样20140102,09:30,38.88,38.88,38.82,38.85,67004我有500个文件,每个大约20-30MB。我的代码工作得很好,但我不禁想知道是否有比我现在正在做的更好的方法来转换这些文件。先读取文件并转为csv记录(伪代码)data,err:=ioutil.ReadFile(path)iferr!=nil{...}r:=csv.NewReader(bytes.NewReader(data))records,err:=r.ReadAll()iferr!=nil{...}然后遍历所

google-app-engine - 如果没有小数,Google Cloud Datastore 会将 float 存储为 int,我该如何解析它?

为了进行测试,我正在使用开发人员的控制台并将一个实体类型的帐户输入到数据存储区中。typeAccountstruct{Balancefloat64Useridint}如果我输入的余额为10,则在使用我的Go应用程序“获取”实体时会得到以下信息。Balance:0Userid:1但是,如果我将Balance更改为10.1,那么我会得到预期的结果Balance:10.1Userid:1这有点意料之中。但是,如果我存储一个小数点后没有任何内容的float,它就会变成INT类型。在这种情况下,如果我的余额没有像1.00这样的小数,它就不会加载到我的结构中。(它将删除两个00)

sockets - 通过 udp 套接字发送 float32 值

我正在做一个Go项目,我想使用UDPSocket发送float32值。我不明白的是,在发送这些数字之前将它们转换为字节缓冲区的最佳方法是什么,以及如何在接收到它们后将它们转换回float32。目前我正在使用我在网上找到的以下函数转换float32->[]byte,但我什至不确定我是否得到了我想要的:funcFloat32bytes(floatfloat32)[]byte{bits:=math.Float32bits(float)bytes:=make([]byte,4)binary.LittleEndian.PutUint32(bytes,bits)returnbytes}我仍然不知道

type-conversion - 如何将 int[] 转换为 uint8[]

所以,我需要你的帮助。我找不到关于该主题的任何内容。Golang是一门刚出炉的语言,所以对于像我这样的新手来说很难快速找到答案。 最佳答案 预先声明的Goint类型大小是特定于实现的,32位或64位(Numerictypes)。下面是一个将大端int转换为byte(uint8)的示例。packagemainimport("encoding/binary""fmt""reflect")funcIntsToBytesBE(i[]int)[]byte{intSize:=int(reflect.TypeOf(i).Elem().Size()

go - 将 []uint8 转换为 float64

处理格式为[]uint8而不是JSON的httpresp.Body的最佳方法是什么?我想将字节转换为float64。这是返回值响应:value:%!F([]uint8=[48464848495053535049]) 最佳答案 尝试使用strconv包(play)中的ParseFloat:b:=[]uint8{48,46,48,48,49,50,53,53,50,49}f,err:=strconv.ParseFloat(string(b),64)iferr!=nil{//Handleparseerror}fmt.Printf("%f\

xml - Golang 更改 float 的 xml 编码格式

当我将float64编码到xml文件时:typeXstruct{Valuefloat64`xml:",attr,omitempty"`}varxXx.Value=1000000.04我得到的值如下:如何更改输出格式,以便写入完整值(1000000.04)(并且omitempty标签仍然有效)? 最佳答案 您可以创建自己的数字类型,以您喜欢的方式编码:typeprettyFloatfloat64func(fprettyFloat)MarshalXMLAttr(namexml.Name)(xml.Attr,error){s:=fmt.S

Golang 将 float64 转换为 int 错误

在将float转换为int时如何避免浮点错误。例如下面的代码打印:0.5499999999999972当我希望它打印0.55时。packagemainimport"fmt"funcmain(){x:=100.55fmt.Println(x-float64(int(x)))}Output:0.5499999999999972 最佳答案 你需要了解一些东西:100.55是一个十进制数(以十进制基数表示)。十进制的100.55是一个有限数,就是这样:100.55。计算机通常以二进制表示形式存储数字。数字100.55不能用有限二进制数表示: