gpt4 book ai didi

java - 存储为字符串的 Android SQL Lite int 值在检索时显示额外字符

转载 作者:IT王子 更新时间:2023-10-29 02:13:21 27 4
gpt4 key购买 nike

我在 MongoDB 数据库中将电话号码存储为 Double(错误)。所以数字在数据库中看起来有点像这样 -

180010000001.0

我通过 golang 后端获取它,它给出的响应令人惊讶地是这样的 -

{
"phoneNumber": 180010000001
}

我没有通过任何结构传递这些数据,它只是一个简单的mgo查询

MgoSession.DB(Dbname).C(collectionName).Find(query).All(&result)

返回接口(interface)数组 []interface{}

现在我在我的 Android 应用程序上使用此 Web 服务并将这些值内部存储在 SQL Lite 中以便在整个应用程序中使用,就像这样 -

phoneNumber TEXT

然后我就这样存储了,

contentValues.put("phoneNumber", phoneNumber);

然后像这样获取它-

cursor.getColumnIndex("phoneNumber")

并将其分配给我已声明为 String

的变量

现在当我打印出来时,它显示 -

1.80010000001E11

这种转变发生在哪里?!

最佳答案

此 JSON 文本:

{
"phoneNumber": 180010000001
}

定义一个具有属性 "phoneNumber" 的 JSON 对象,其值为 JSON number : 180010000001。注意:该值不是 JSON 字符串,它应该是用引号引起来的,看起来像这样:

{"phoneNumber": "180010000001"}

回到原来的:它是一个 JSON 数字,所以当 JSON 文本被解析并转换回 Java 或 Go 值时,它将是一个 float 。当打印 float 时,通常(当数字太“大”或太“小”时)scientific notation在您的情况下使用的是:

180010000001 = 1.80010000001E11

如果你想避免这种情况(你应该),你必须将你的电话号码声明为 long 类型(在 Java 中)或 uint64(在 Go 中) ,或者更喜欢简单地将其声明为 string 类型,因此不会出现舍入错误的“神秘”格式。

如果您已经将它作为 double 值保存在 MongoDB 中,要么加载所有并将它们重新保存为 string(最好),或者如果您不想这样做,请将其转换为string,然后将其发送给您的客户。

关于java - 存储为字符串的 Android SQL Lite int 值在检索时显示额外字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39587591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com