如何在InfluxDB中创建一个带有2位小数的浮点字段

时间:2018-05-18 05:45:11

标签: java types influxdb measurement

我在java中输入了我的InfluxDB这个点:

            dbConnector.write(Point.measurement(machineData.getOpcuaObject())
                .time(machineData.getTimestamp(), TimeUnit.MILLISECONDS)
                .addField("value2", round(machineData.getValue().floatValue(),2))
                .tag("sensor", machineData.getSensor())
                .build());

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

如果我写入潮流那么:

.addField("value2", round(machineData.getValue().floatValue(),2))
我成了这个:

1526622038902000000 0.13704816468572244048 Istdrehm 

如果我写入潮流那么:

.addField("value2", 0.13)
我成了这个:

 1526622038902000000 0.13 Istdrehm 

为什么,任何想法?

圆形代码:

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();

}

1 个答案:

答案 0 :(得分:0)

这实际上是一个Java问题而不是InfluxDB问题,但既然我同时做了这两个问题,我想我会给出答案。基本上你想将数字四舍五入到之前的,然后将它存储在InfluxDB中,因为InfluxDB保留了所有的精度。

请参阅此答案:What's the best practice to round a float to 2 decimals?

有关如何在将该数字存储在InfluxDB中之前将小数舍入到2个重要位置。

HTH, 分克