我在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();}
发布于 2018-05-25 14:10:32
实际上,这更像是一个Java问题,而不是一个InfluxDB问题,但由于我两者都做了,我想我应该给出一个答案。基本上,您希望在存储到之前,将数字舍入最接近的小数点2位(),因为InfluxDB保留了所有的精度。
见以下答案:What's the best practice to round a float to 2 decimals?
有关如何将小数点舍入到两个重要位置后,才能将该数字存储在InfluxDB中。
高密度
https://stackoverflow.com/questions/50404512
复制相似问题