Forum Discussion
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 7th 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 7th 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)
99 Replies
- ChrisElkinCommunity Member
Hi - thanks for this script.
I've added the additional line to the code:
var numTimes = numValue * 0.3;
and now I don't get a rounded whole number with every calculation
e.g.
enter 100 returns 30 - cool
enter 30 returns 9 - cool
enter 54 returns 16.2 - ??? would like it to round unto 17
NE1?
_________________________________________________________________________
var numValue = player.GetVar("howMany");
var numTimes = numValue * 0.3;
var JSRoundedNum = numTimes.toFixed(1);
player.SetVar("total",JSRoundedNum);
- KyleTrailCommunity Member
I ended up just creating the variables and dividing then multiplying them. It worked like a charm.
- AllisonAntalek-Community Member
All you seriously have to do is delete the first set - %Results.ScorePercent%% - and then remove the parentheses and then all you get is the total amount of points. Hope this helps! Allison
- StephaniePownerCommunity Member
Please does anyone know if the number of decimal places stored has changed? I have published a course in Storyline 1 before and using the dividing/multiply method and all worked fine. Have now published from Storyline 2 and I get the two decimal places again. Also, I am now using HTML5 output. Thanks
- YoncaUral1Community Member
Hi,
As someone who doesn't really know much about Javascript, I'm trying to figure out how to solve a problem I'm having. In our course, we have a variable that we are displaying on each page to show the % complete. We did the divide by 10,000,000 then multiply by 10,000,000 and it's working fine non-mac devices. However Macs are still displaying the two decimal places and we want to get rid of that. So, I tried to add this JS after my % visited variable is calculated and it's not working.
Here is what I added:
var player = GetPlayer();
var numValue = GblScreensVisitedPercentage
var JSRoundedNum = numValue.toFixed(1);
player.SetVar("RoundedNum",JSRoundedNum);Any thoughts would be greatly appreciated!
- JodieJones1Community Member
Wow. I was skeptical, but this worked great! Thank you soooooooo much.
- BobColemanCommunity Member
Why couldn't you perform your math functions followed by the division and multiplication at the end to get the whole number. You could also use a condition to say if the answer is >10, you subtract one of the 0's, still allowing you to use the program without JS.
ex. answerNum / 100000 x 10000000 if answerNum<10
then another trigger that says answerNum / 10000 x 10000000 if answerNum>=10
The concept should be true. I'd have to actually play with the numbers to make it work exactly, but these kinds of triggers are definitely doable.
- ravikhadeCommunity Member
This works fine in flash version but not in html5 version
- dohareCommunity Member
Does anyone have specific screen shots on how to do round the percentage? I really can't seem to work out how to do this.
Thanks!
- MikeClapper-5daCommunity Member
I've tried this method in Storyline 3, and it doesn't seem to work. I still get a percentage down to the hundredths. I've even taken the divide/multiply operation to the maximum number of characters to no avail.
I tried copying some Javascript as well. I created a trigger to execute the following Javascript command: Math.round(Results.ScorePercent);
This did not work, either.
Any suggestions?