【问题标题】:How to create a float Field in InfluxDB with 2 decimal如何在 InfluxDB 中创建一个带有 2 个小数的浮点字段
【发布时间】:2018-10-28 11:50:19
【问题描述】:

我在我的influxDB中把这个点放在java中:

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

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

如果我写进influx的话:

.addField("value2", round(machineData.getValue().floatValue(),2))

我变成了这样:

1526622038902000000 0.13704816468572244048 Istdrehm 

如果我写进influx的话:

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

}

【问题讨论】:

  • 听起来你需要调试 Java 端——以使 Rounding 方法正确——然后 InfluxDB 端就可以正常工作了。

标签: java types influxdb measurement


【解决方案1】:

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

看到这个答案:What's the best practice to round a float to 2 decimals?

了解如何在将该数字存储到 InfluxDB 之前将小数四舍五入到 2 个有效位。

HTH, dg

【讨论】:

  • thx davidgs 我试过了,但这并不能解决问题。我用新代码编辑我的问题
猜你喜欢
  • 1970-01-01
  • 2013-06-18
  • 2011-02-02
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多