Как создать поле с плавающей запятой в InfluxDB с 2 десятичными - PullRequest
0 голосов
/ 18 мая 2018

Я положил в свой притокDB эту точку в Java:

            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 голосов
/ 25 мая 2018

На самом деле это больше вопрос Java, чем вопрос InfluxDB, но, поскольку я делаю оба, я решил дать ответ.Как правило, вы хотите округлить число до 2 десятичных разрядов до , чтобы сохранить его в InfluxDB, поскольку InfluxDB сохраняет всю точность.

см. Этот ответ: Как лучше округлять число с плавающей запятой до 2 десятичных дробей?

, чтобы округлить десятичную дробь до 2 значащих разрядов перед сохранением этого числа в InfluxDB.,

HTH, дг

...