0
temperatureReading = Math.round(temperatureReading * 10) / 10

gives me 26.29999999999999999999 instead of 26.3

And 26.00000000001 instead of 26.0

I get alternating 2 values from the temperature sensor: 26.33 and 26.3200000

After the conversion I have: 26.2999999999999

The number of the repeating digits above is just an example. My display on the micro bit is not wide enough to see them all.

I use toString() to display the values.

Unfortunately, toFixed() and toPrecision() is not available on the micro:bit

Can the rounding be achieved by some other operations?

monok
  • 494
  • 5
  • 16

1 Answers1

1

With the following code I can now get numbers with 1 decimal as a string:

let temperatureStr = Math.round(temperatureReading * 10).toString()
let temperature = temperatureStr.slice(0, temperatureStr.length - 1) + "." + temperatureStr.slice(temperatureStr.length - 1);

I first multiply the number by 10 and convert the result to a string. Then, I insert the decimal point before the last digit. This gives me the string I want to print.

monok
  • 494
  • 5
  • 16