在Galaxybase中,为什么通过java执行算法查询之后返回给客户端的结果,解析写入到文件中会出现属性值为科学计数法的情况?

空气格红薯饼 2023-05-23 15:39:23

在Galaxybase中,为什么通过java执行算法查询之后返回给客户端的结果,解析写入到文件中会出现属性值为科学计数法的情况?

以下是代码:

public class Test {
    public static void main(String[] args) throws IOException {
        GalaxyBaseClient client = new GalaxyBaseClient("localhost", 8180);

        String query = "g.V().hasLabel('person').has('age', gt(20)).values('name', 'age')";
        GremlinResultSet result = client.submit(query);

        FileWriter fw = null;
        try {
            fw = new FileWriter("test.csv");

            String[] columnNames = {"name", "age"};
            for (int i = 0; i < columnNames.length; i++) {
                fw.write(columnNames[i]);
                if (i < columnNames.length - 1) {
                    fw.write(",");
                }
            }
            fw.write("\n");

            while (result.hasNext()) {
                Object[] values = result.next();
                for (int i = 0; i < values.length; i++) {
                    Object value = values[i];
                    fw.write(value.toString());
                    if (i < values.length - 1) {
                        fw.write(",");
                    }
                }
                fw.write("\n");
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fw != null) {
                fw.close();
            }
            result.close();
            client.close();
        }
    }
}
...全文
72 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-05-23
精选
  • 打赏
  • 举报
回复
您的问题已经帮您同步至问答, 链接: https://ask.csdn.net/questions/7949958, 请您保持关注, 如果回答有帮助解决此问题, 麻烦您动动小手给相关的回答点赞, Ada会在评论区为您更新结题状态
创邻科技 2023-05-23
  • 打赏
  • 举报
回复 1

double类型的属性,在解析之后写入文件会变成科学计数法。 这个科学计数法的问题是java会自动将过大或过小的数据转换成科学计数法。
可以通过java的BigDecimal类解决。

String str=new BigDecimal(num+"").toString();

针对您的情况,可以作以下优化:

            while (result.hasNext()) {
                Object[] values = result.next();
                for (int i = 0; i < values.length; i++) {
                    Object value = values[i];
                    if (value instanceof Double) {
                        String str = new BigDecimal(Double.toString((Double)value)).toString();
                        fw.write(str);
                    } else {
                        fw.write(value.toString());
                    }
                    if (i < values.length - 1) {
                        fw.write(",");
                    }
                }
                fw.write("\n");
            }


7

社区成员

发帖
与我相关
我的任务
社区描述
Galaxybase原生分布式高性能图数据库相关技术讨论区
数据库知识图谱 技术论坛(原bbs)
社区管理员
  • 创邻科技
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧