significant figures

Hi!
I just wonder how to do a code which round of to a number off two decimals.
For example if I have the code text(54.98*1.52), the answer will be 83.5696. What should I do if I want it to print 83.57 instead of 83.5697?

If the only reason you want to round the number is for display purposes (print, text etc) then use string.format("%.2f", 3.5694) --returns 3.57 (Edit: wrote text.format by mistake)

If you google printf codes you’ll see an explanation of the format code. %f is the code for a floating point number, and .2 means 2 decimal places.

If however you need the number to be rounded for the purpose of further computation, you can use something like this, to avoid converting the number to a string:

function math.round(number, places) --use -ve places to round to tens, hundreds etc
  local mult = 10^(places or 0)
  return math.floor(number * mult + 0.5) / mult
end

Note also that text string format can accept multiple arguments. I use it for doing arcade game scorelines, eg if you want the score to always display as 6 digits (regardless of how low it is, eg “000015”) in classic arcade style. You can do something like this: string.format("Frames Per Second %.2f Lives %d Score %.6d", FPS, playerHealth, score) where the 3 arguments following the string correspond to each of the print codes.

OK! But how would you do if the code is:
text(54.98*1.52,500,500) if you want it to be writing 83.57 in the position (500,500)

text(math.round(54.98*1.52,2),500,500)

Here’s 3 ways of using string.format.


supportedOrientations(LANDSCAPE_ANY)

function setup()
end

function draw()
    background(40, 40, 50)
    fill(255)
    
    text(string.format("Result = %.2f",54.98*1.52),500,500)
    
    val=54.98*1.52
    text(string.format("Result = %.2f",val),500,450)
    
    str=string.format("Result = %.2f",val)
    text(str,500,400)
end

Ok! Thank you everybody!

whats the difference between %d and %.6d?

try it and see