# 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