# A Solution to rounding in Storyline – without using Javascript

Normal 0 false false false oNotPromoteQF /> EN-US X-NONE X-NONE

I found a way to round numbers in Storyline without using Javascript. The challenge was to show whole percentage numbers from calculated decimal numbers (i.e. 33% for 1/3 and 67% for 2/3). Searching through the forums, all I could find was Javascript solutions and suggestions to submit a feature request. Not happy with either of these answers, I continued to play around.

I found that Storyline only holds 7 digits past the decimal
place, and the 7^{th} digit is rounded.
So to get a rounded decimal (percentage) as a whole number, divide by 100,000, and
then multiply by 10,000,000.

For example:

2 / 3 = 0.6666667
(rounded at the 7^{th} position by Storyline)

0.6666667 / 100,000 = .000006666667 (which is rounded to 0.0000067)

0.0000067 * 10,000,000 = 67

Now we have our rounded 67% from 2/3

You should be able to apply this to any number you want to round. Divide and then multiply by a multiple of 10 that is large enough to push the number you want to round to the 7th position past the decimal (i.e. 13,567 / 10,000,000,000 * 10,000,000,000 = 14,000)

## 95 Replies

This method only works in Storyline 2. Storyline 3 holds much more digits. I divided number by 1e+308 (max) and then multipled by 1e+308 and the result was the same as source number.

Since this does not work in Storyline 360, I found a very easy way to implement a floor flunction in Storyline 360 without using Javascript.

EDIT: Corrected for edge cases and much simplified! Also attached an updated screenshot.Corrected Steps:

Results Slide triggers:

And that is it!

--------------------------------------------

Old (

incorrect) version below.Edit 4/17/2019: I have removed the incorrect version to avoid confusion.floor_screen_UPDATED.pngHi Mitch,

Thank you for providing this! When we implemented it we realized if we got a perfect score it was rounding down to 99%. I added a trigger between your step 1 and 2 triggers that says Set floorScore equal to Results.ScorePercent if Results.ScorePercent =100, and also added a condition on your step 3 trigger to say

iffloorScore does not equal 100. This solved the problem for us.triggers.pngThis post was removed by the author

Hey Mitch and Lauren!

Thanks for sharing the inputs :)

Can you please explain the logic behind the triggers?

Hi everyone

This discussion is great, some really useful info!

I'm still slightly stumped with this, I've created a SL using the triggers etc detailed above and it's got rid of the decimal places which is great, however it doesn't seem the maths is right. If I score 4 out of 5 the results slide is telling me I score 79% rather than 80% and I can't work out whats not quite right.

I've attached the file, if anyone can help i'd be very grateful!

Thanks

Mike

Screenshot.PNGStoryline__RoundUpScoreExample_.storyHi Michael,

I noticed the same thing after playing around with my original triggers. I now use a much simpler method, though it just gives me a true floor function instead of rounding. I'm sure it can be adjusted to give true rounding, but a floor function works for what I need. Here is the updated version:

Initialize variable floorScore to 0

Slide Triggers on results slide:

Set floorScore = 100 when timeline starts

Subtract 1 from floorScore when floorScore changes if floorScore is > Results.ScorePercent

Then display floorScore on your results slide as the user's score. Attached is your project file with adjusted triggers.

Storyline__RoundUpScoreExample_adjusted.storyThanks so much Mitch!

I have tried the trick of Terry and Tom but the math are incorrect. I am not using this with a test score but with a slider, and I would like the slider to display just non decimal values but allow the slider to move in 10th of decimals.

Why is this the "rounded" value incorrect ?

slider_round_off.storyUntitled.pngHi Philippe,

Does not work with SL3 anymore (see Radosław Kwasek answer above).

Use Mitch's clever solution (impressive, just figured out how it works!)

Is this still working in 360?

Some previous SL2 conversions to 360 aren't showing as rounded and starting from scratch comes up without rounding as well.

I does not work in 360. See my solution above for a floor function that works in 360.

I can't get this to work. I used the file that Tom uploaded four years ago (thanks Tom)! Wonder why this is still not automatic.

Anyway, maybe it's not working because I have two quizzes in my course so I have two results slides + I also have a final results slide.

I'm not as technically inclined as most of you so I just literally copy everything that Tom did in his file. I am unable to troubleshoot with my low skill levels.

Can anyone help me figure out why it isn't working? Does it have to do with the fact that I have 3 results slides? Should one of the triggers be altered? Do I need 3 variables...1 for each results slide? Everything I've tried has failed.

Thanks!

Hello Mitch and Lauren,

Mitch, thank you for the great workaround! Lauren, thank you for explaining how to keep the score at 100 vs. 99.

I am still trying to grasp how this workaround actually works... Now I'm getting 1% if I get all of the answers wrong.

Did anyone else run into this? What additional trigger am I missing to prevent this from happening?

Thank you again!

-Anna

Hi Anna,

If you are getting 1% when you expect 0% my guess is that you are using "greater or equal to" instead of "greater than" when comparing your floorScore variable vs Storyline's Results.ScorePercent variable. If you post a project file with the triggers you are using I will take a look at it.

Hi Mitch,

Thank you so much for reaching out! I don't believe I had any triggers that were set to "greater or equal to."

I was able to navigate around the 1% by adding a trigger to set the floorScore equal to the value of the Results.Score.Percent if Results.ScorePercent was 0 (similar to the 100% trigger).

I attached all of my slide triggers. There shouldn't be any problem with adding this additional trigger, correct?

Thank you again.

Slide_Triggers.JPGHi Anna,

The reason you are getting 1% instead of 0% is because you are using the first version I posted which does not work for 0% for many reasons. The new trigger you added that sets floorScore to Results.ScorePercent if Results.ScorePercent equals 0 will work to correct this in most cases.

However, I recommend you use the corrected and simplified version in the edit to my original post that uses only one variable and two triggers.

Hi Mitch,

Got it. Thank you again for posting your helpful solution!

Anna

I have a similar issue, but I am not using a results slide. I am creating a conversion for Fahrenheit to Celsius and the math gives me a decimal. I have tried to incorporate the math above, but it still gives me the decimal. Does it only work on the results slide?

This post was removed by the author

I am having a similar problem as Terry. I am actually trying to show a percentage on a progress indicator and I need to strip off the 2 decimal places. I don't need to round it (but it would be handy), I just dont want a progress indicator showing x.xx%

I have been right through this thread and tried the different solutions to no avail :(

David…

I finally had to use the Java solution and it works great…

2 days ago

Hello! This is what I use to round - add a trigger to execute this Java.

I usually have a variable that contains the answer, then I pass it to another variable, then run it though this script. NumberYearCalc is my answer that was passed. And RNDofNumberYearCalc is my new variable that the rounded number will be passed to.

var player = GetPlayer();

var JSRounded=Math.round(player.GetVar("NumberYearCalc"));

player.SetVar("RNDofNumberYearCalc",JSRounded);

Thank you,

Terry Arthur

Training Development Analyst

Rinnai America Corporation

103 International Drive

Peachtree City, GA 30269

Phone: 800.621.9419 x4361

Direct Dial: 770.632.4361

Email: tarthur@rinnai.us

Web site: www.rinnai.us

Training site: www.trainingevents.rinnai.us

twitter: www.twitter.com/rinnai

facebook: www.facebook.com/rinnaiamerica

Rinnai America Corporation

Why Rinnai?

Terry you are an absolute legend, it works perfectly :D

Only problem is it wont work for my mobile users, but hopefully that's only a small portion of people

thank you so much - it works! this was doing my head in!!!

Hi Terry,

Just wanted to jump in here because I noticed that your email signature came through when you replied via email. You can remove that if you would like by clicking

Editbeneath your response. Here’s a quick Peek video if you need help.