时间:2021-05-22
最近在项目中,一个go服务给前端提供了一个接口,返回json格式数据,其中Int64字段会超出javascript Number可表示的最大的Int值会丢精度,可以通过返回string类型值来屏蔽这个问题。
问题描述
Go服务返回的json格式如下,其中deviceId_O为:144115188584281742
而前端拿到的deviceId_O变成了:144115188584281730。最后两位数字变了,造成无论怎么调试都不成功。
其实这个问题不难定位,只需要查看一下调试工具中的Preview和Response区别就能对比出来,不过这个问题头回遇到还是会比较诡异。
Javascript Number 最大值
Javascript提供的Number对象提供了一个MAX_SAFE_INTEGER,这是一个固定值就是:9007199254740991。那么超出这个范围就怎么不安全了呢?看例子:
Go Int64 最大值
我们通过这段代码来获取int64最大值,值为:9223372036854775807.
i64 := int64(^uint(0) >> 1)fmt.Println(i64)解决方案
Go服务再返回json的时候以字符串形式返回值即可解决这个问题。如本文中第一张图中的deviceId返回即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
PythonDataFrame如何设置列表字段/元素类型?比如笔者想将列表的两个字段由float64设置为int64,那么就要用到DataFrame的astyp
在实际开发中我们往往需要对一些常用的数据类型进行转换,如string、int、int64、float等数据类型之间的转换,Go语言中的strconv包为我们提供
(1)int转strings:=strconv.Itoa(i)等价于s:=strconv.FormatInt(int64(i),10)(2)int64转stri
指针函数指针函数是一个函数,只不过指针函数返回的类型是某一类型的指针。格式:类型名*函数名(函数参数列表)使用:/**指针函数,返回int*指针变量*/int*
Int、Fix函数返回数字的整数部分。Int(number)Fix(number)number参数可以是任意有效的数值表达式。如果number参数包含Null,