Round a variable

About advanced scenes, and the Thyme scripting language used in Algodoo.

Round a variable

How can I round a variable? Does someone know a function for it that works in Algodoo?

KarateBrot

Posts: 825
Joined: Mon Aug 31, 2009 7:32 pm
Location: Germany

Re: Round a variable

Suprisingly I have a good answer for this. You see, there seems to be no rounding command I know of, so I created an if statement to replace one. This user created command asks if a decimal has the number after the point to be 5 or higher, if it is, then it rounds up, if not, then it rounds down.

Example:
5.74 => 6
10.333333 => 10
3.5 => 4

put this in oncollide, otherwise find a way to translate it to a console code.

Code: Select all
`scene.my.number >= (math.toint(scene.my.number) + 0.5) ? {scene.my.number = math.toint(scene.my.number) + 1} : {};     scene.my.number < (math.toint(scene.my.number) + 0.5) ? {scene.my.number = math.toint(scene.my.number)} : {}`

the only thing you must replace in that code is scene.my.number, which is the number you want to use.

I used mostly if statement and Math.toint, which changes a decimal to an integer, but only to the highest point of the former decimal, from 10.9 to 10, for example.

If that is not exactly what you want, then explain.

If it is, then I'm glad I helped you
"THE BEST 2 PLAYER SCENE EVER MADE!!!" - ianno
http://www.algodoo.com/algobox/details.php?id=24204

Ian151

Posts: 47
Joined: Tue Sep 01, 2009 12:02 am

Re: Round a variable

yeah thanks that's nearly what i want! but is it possible to round to specific decimal places?

for example 6.490843697878903 will be rounded to 6.49084

KarateBrot

Posts: 825
Joined: Mon Aug 31, 2009 7:32 pm
Location: Germany

Re: Round a variable

KarateBrot wrote:yeah thanks that's nearly what i want! but is it possible to round to specific decimal places?

for example 6.490843697878903 will be rounded to 6.49084

To do that we would need to be able to truncate.

standardtoaster

Posts: 606
Joined: Mon Aug 31, 2009 7:57 pm

Re: Round a variable

standardtoaster wrote:
KarateBrot wrote:yeah thanks that's nearly what i want! but is it possible to round to specific decimal places?

for example 6.490843697878903 will be rounded to 6.49084

To do that we would need to be able to truncate.

but isn't it possible to change Ian's code a bit so that the number first is multiplied by for example 100000, then be rounded to the whole number and after that divided by 100000. That should work or what do you think of this idea?

KarateBrot

Posts: 825
Joined: Mon Aug 31, 2009 7:32 pm
Location: Germany

Re: Round a variable

Luckily for you, some very smart people (*cough* me *cough*) have worked on that matter:

http://www.phunland.com/forum/viewtopic.php?id=6972
Link: "Surely somebody hates Walter Cronkite.."
Sonic: "Probably.. But somebody hates everyone."

Posts: 408
Joined: Thu Jun 11, 2009 2:45 pm

Re: Round a variable

just use number - math.mod(number, 0.0(you choose the numbers you want to round)1 )

i made an old example scene...
http://www.algodoo.com/algobox/details.php?id=25798

degrees are rounded in 0.5 increments(not enough text space)
Jrv wrote:
TC42 wrote:Quite honestly, I didn't think anyone on 4chan has that good a use of grammar, spelling, usage, mechanics, ect.
But I've never been there, so I may be wrong.

GTFO newfgt

RA2lover

Posts: 607
Joined: Mon Aug 31, 2009 8:43 pm
Location: Brazil

Re: Round a variable

thanks.

i got a very similar idea today in school while nearly sleeping. just was sittign around, bored, and suddenly BAM it came to my mind
I instantly wrote down my ideas and made a code out of it. it's a similar method of your code.

- - - - -

If anyone is interested that's my code:

Code: Select all
`Scene.my.round = (x, digits) => { ( x*10^(digits + 1) - math.mod(x*10^(digits + 1), 1) ) >= ( (x*10^digits - math.mod(x*10^digits, 1) ) * 10 + 5 ) ? { ( (x*10^digits - math.mod(x*10^digits, 1)) + 1 ) / 10^digits } : { (x*10^digits - math.mod(x*10^digits, 1)) / 10^digits } }`

x is your variable or figure and digits stands for the desired decimal places

KarateBrot

Posts: 825
Joined: Mon Aug 31, 2009 7:32 pm
Location: Germany