ok

apparently c2 doesn't allow very large numbers, because it kept rounding when I'd use a number global instead of text and convert it to a string.

so first we set our global text variable to the number

the we do a loop from 1 to len(number)/3

len(number) is the length of the string,(called "number") as in, how many characters in the string divided by 3, because we want it in chunks of 3 for the comma

xxx,xxx,xxx,xxx,etc

then we have mid(number,len(number)-loopindex*3,3)&((loopindex>1)?",":"")&text.text

this we will break down piece by piece, first we have:

mid(Text, Index, Length)

this will get you a substring of Text, beginning at character Index, for Length characters, so if you did

mid("This string here", 3, 7)

you would get

"s strin"

you started at the index 3 in the string (0,1,2,3), and took 7 letters with you

so we have

mid(number,len(number)-loopindex*3,3)

our string is called "number" (to avoid confusion)

number = "495825542"

so we have mid("495825542",len("495825542")-loopindex*3,3)

len(number) returns the number of letters in the string

in this case 9, remember this parameter we're working on is the Index letter we want the substring to start on ( mid(Text, Index, Length) )

so len("495825542") has 9 letters, so in this case it equals 9

now we have

mid("495825542",9-loopindex*3,3)

loopindex*3 will start us on multiples of 3, but since we are minusing from 9 it will go from right to left:

loopindex=1

9-(1*3) = 6

so we start on index 6 of "495825542"

so we're on the last digit '5'

"495825(5)42"

and we are taking 3 characters "542"

next loopindex would be:

9-(2*3) = 3

so "495(8)25542"

and we take those 3 characters "825"

etc

we go from right to left, because if we have a number that's not divisible by 3, we don't want to have this

678,45

instead of

67,845

but the entire expression was:

mid(number,len(number)-loopindex*3,3)&((loopindex>1)?",":"")&text.text

so we have the mid() out of the way

then we have &((loopindex>1)?",":"")

this is a conditional operator:

condition?if true:if false

for instance if you did

5>4?"true":"false"

that expression would evaluate to "true" because the condition was true

if you did

5<4?"good":"bad"

if would evaluate to "bad" because 5 is not less than 4

in our expression:

((loopindex>1)?",":"")

we check if loopindex is equal to 1 and if it is not we add a "," to our string, and if it is we add "" (nothing) to our string

this is because once again we are working from right to left, and we don't want our numbers looking like this:

100,000, (with the extra comma at the end)

instead of just

100,000

one more look at our expression:

mid(number,len(number)-loopindex*3,3)&((loopindex>1)?",":"")&text.text

at the end we have &text.text

since we are doing the right side first we can't append to the end of the string

we have to add to the beginning, so we are getting our three numbers &text.text to add what we already have to the right side of our our current expression

after all that is over

we do:

"$"&text.text

to add the dollarsign to the left of our current text

make sense?

EDIT: i just tested this with nondivisible by 3 numberlengths and it did not work correctly. so I reuploaded and it has one extra step:

if (len(number)%3>0)

% operator gives the remainder of a division problem

like 9%3=0 because 9/3=3 with no remainder

8%3=2 because 8/3=2 r2 (a remainder of two)

so we want to know if the number of digits is divisible by 3

if it is, there is no remainder, we don't want an extra comma in there, so we skip this step, if it is greater than 0 there are some digits leftover, but less than three, actually there are exactly len(number)%3 digits left over so we :

set text to:

left(number,len(number)%3)&","&text.text

left is like mid but from the left side of the string

left(Text, Count)

so our Text is number

and the number of characters we want(Count) is len(number)%3 because that's how many characters are leftover after our clever little *3 loop.

then we add our "," and connect it to the rest of our number