Number formatting in rules

Hey guys,
I need help with formatting a number in rules.
That is what I have:

    var Number sumRainToday		= Rain_Rain.sumSince(parse(now.toString("yyyy-MM-dd'T'")))
	var Number sumRainYesterday	= (Rain_Rain.sumSince(parse(now.minusDays(1).toString("yyyy-MM-dd'T'"))) as Number) - (sumRainToday as Number)
	var Number sumRainThisWeek 	= Rain_Rain.sumSince(parse(now.minusDays(now.getDayOfWeek - 1).toString("yyyy-MM-dd'T'")))
	var Number sumRainLastWeek 	= (Rain_Rain.sumSince(parse(now.minusDays(now.getDayOfWeek + 6).toString("yyyy-MM-dd'T'"))) as Number) - (sumRainThisWeek  as Number)

	sendLogNotification("OH Test:\nRain: " 
	+ "\nRegen heute: " 		+ String.format("%.1f", sumRainToday)			+ " mm/h"
	+ "\nRegen gestern: " 		+ String.format("%.1f", sumRainYesterday)		+ " mm/h"
	+ "\nRegen diese Woche: " 	+ String.format("%.1f", sumRainThisWeek)		+ " mm/h"
	+ "\nRegen letzte Woche: " 	+ String.format("%.1f", sumRainLastWeek)		+ " mm/h"
    )

I got this error:

Rule 'Test': f != org.eclipse.smarthome.core.library.types.DecimalType

How can I solved this problem?

%.1f requires a float, so…

String.format("%.1f", sumRainToday.floatValue)

This has nothing to do with the error, but there is no need for all the parsing, use val instead of var, and only cast when you need to…

    val sumRainToday		= Weather_Precipitation_Total.sumSince(now)
	val sumRainYesterday	= Weather_Precipitation_Total.sumSince(now.minusDays(1)) - sumRainToday
	val sumRainThisWeek 	= Weather_Precipitation_Total.sumSince(now.minusDays(now.getDayOfWeek - 1))
	val sumRainLastWeek 	= Weather_Precipitation_Total.sumSince(now.minusDays(now.getDayOfWeek + 6)) - sumRainThisWeek

1 Like

Thank you for your help.

1 Like