AE Counter Expression (0.0M views)

I'm trying to work out a counter that simply goes like:

2.5M views

At the moment I've got this expression working along with a Slider Control:

``````var num = effect("Slider Control")("Slider")
num = Comma(num) + "M views";
[num]

function Comma(number)
{
number = '' + Math.round(number);
if (number.length > 3)
{
var mod = number.length % 3;
var output = (mod > 0 ? (number.substring(0,mod)) : '');
for (i=0 ; i < Math.floor(number.length / 3); i++)
{
if ((mod == 0) && (i == 0))
output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
else
output+= ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
}
return (output);
}
else return number;
}
``````

This though only makes my text layer go like:

2M views

I've tried already replacing the first line with:

``````effect("Slider Control")("Slider").value.toFixed(2)
``````

But this adds a decimal followed by a comma normally, it doesn't work anyways on this expression but maybe it can help.

Here's my cheat sheet for numeric text animations like this:

``````slider = (effect("Slider Control")("Slider").value);
tidying = (Math.round(slider * 100))/100;
SourceText = "\$" + tidying + "bn" +"\r" +"DEBTS";
``````

the .value is sometimes needed to force AE to look at the slider as a number, not as an object.

tidying is being done to round up to 2 decimal places

\r gives a line break

text is appended with +”text”+

you can comment out some text /* like this */

So in the example above, you would get an output like this:

``````\$5.23bn
DEBTS
``````

So for your specific example, try something like this:

``````slider = (effect("Slider Control")("Slider").value);
tidying = (Math.round(slider * 10))/10;
SourceText = tidying + "M views";
``````

To specify showing a decimal place at all times (displaying "2.0" when your slider is set to "2"), use the "toFixed" function, like this:

``````slider = (effect("Slider Control")("Slider").value);
tidying = ((Math.round(slider * 10))/10).toFixed(1);
SourceText = tidying + "M views";
``````

Screenshot:

• Also, any way to keep the 0 when the number goes without decimal? Like 2.0 instead of 2 Apr 15, 2019 at 11:07
• yes, you can use "toFixed(1)" to round to show one decimal place at all times - so: slider = (effect("Slider Control")("Slider").value); tidying = ((Math.round(slider * 10))/10).toFixed(1); SourceText = tidying + "M views";
– tomh
Apr 23, 2019 at 13:46