I guess by default javascript converts numbers into text with as many decimal places as possible.
The browser console typing 4.8*6 gives 28.799999999999997
when you use the str expression you get the same: str(4.8*6) -> 28.799999999999997
But fun fact, if you just try setting text without str construct rounds it slightly to give cleaner values.
AKA set text to 4.8*6 gives 28.8
Anyways, that subtlety isn't worth keeping track of. You can use the roundToDp to round to a number of decimal places so the text looks cleaner.
roundToDp(4.8*6, 10) -> 28.8