首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在InfluxDB中创建具有2小数点的浮动字段

问如何在InfluxDB中创建具有2小数点的浮动字段
EN

Stack Overflow用户
提问于 2018-05-18 05:45:10
回答 1查看 4.4K关注 0票数 0

我在java中加入了我的influxDB:

代码语言:javascript
复制
            dbConnector.write(Point.measurement(machineData.getOpcuaObject())
                .time(machineData.getTimestamp(), TimeUnit.MILLISECONDS)
                .addField("value2", round(machineData.getValue().floatValue(),2))
                .tag("sensor", machineData.getSensor())
                .build());

但这不能解决问题,我不知道为什么。

如果我写成流入:

代码语言:javascript
复制
.addField("value2", round(machineData.getValue().floatValue(),2))

我变成了这样:

代码语言:javascript
复制
1526622038902000000 0.13704816468572244048 Istdrehm 

如果我写成流入:

代码语言:javascript
复制
.addField("value2", 0.13)

我变成了这样:

代码语言:javascript
复制
 1526622038902000000 0.13 Istdrehm 

怎么了,知道吗?

圆形守则:

代码语言:javascript
复制
public static float round(float value, int decimalPlace) {
BigDecimal bd = new BigDecimal(Float.toString(value));
bd = bd.setScale(decimalPlace, BigDecimal.ROUND_HALF_UP);
return bd.floatValue();

}

EN

回答 1

Stack Overflow用户

发布于 2018-05-25 14:10:32

实际上,这更像是一个Java问题,而不是一个InfluxDB问题,但由于我两者都做了,我想我应该给出一个答案。基本上,您希望在存储到之前,将数字舍入最接近的小数点2位(),因为InfluxDB保留了所有的精度。

见以下答案:What's the best practice to round a float to 2 decimals?

有关如何将小数点舍入到两个重要位置后,才能将该数字存储在InfluxDB中。

高密度

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50404512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档