Jump to content

for loop problem


scout1idf
 Share

Recommended Posts

I'm not good with JavaScript so please, if there is a simple solution/explanation, I would appreciate it. Now on to my problem.....I've been using a for loop to speed up repetitive tasks and it seems to work great, till now.

<script type="text/javascript">var count=0;for (count=0;count<30;count+=[color="#FF0000"]2.4[/color])	{		document.write(count+"<br />");	}</script>

The results I get start out correct then go wrong.

FireFox (3.6.16)____________________Results with IE 8____________________Results with Opera0________________________________0________________________________02.4______________________________2.4_______________________________2.44.8______________________________4.8_______________________________4.87.199999999999999________________7.199999999999999_________________7.29.6______________________________9.6_______________________________9.612______________________________12________________________________1214.4____________________________14.4_______________________________14.416.8____________________________16.8_______________________________16.819.2____________________________19.2_______________________________19.221.599999999999998______________21.599999999999998_________________21.6023.999999999999996______________23.999999999999996_________________23.99999999999999626.399999999999995______________26.399999999999995_________________26.39999999999999528.799999999999994______________28.799999999999993_________________28.799999999999994
If I use...
<script type="text/javascript">var count=0;for (count=0;count<30;count+=[color="#FF0000"]1[/color])	{		document.write(count+"<br />");	}</script>OR<script type="text/javascript">var count=0;for (count=0;count<30;count+=[color="#FF0000"]1.5[/color])	{		document.write(count+"<br />");	}</script>

It counts like it should.So why is it when I use "2.4" it doesn't count properly? And why does it produce different results in different browsers?

Link to comment
Share on other sites

Thanks for the help, that worked for me..Another suggestion I got for my problem was....

for (count=0;count<30;count+=2.4)    {        document.write(Math.round(count*10)/10+"<br />");    }

...which works without the permanent float.Either way works for me.Thanks again.

Edited by scout1idf
Link to comment
Share on other sites

Thanks for the help, that worked for me..Another suggestion I got for my problem was....
for (count=0;count<30;count+=2.4)    {        document.write(Math.round(count*10)/10+"<br />");    }

...which works without the permanent float.Either way works for me.Thanks again.

Just so you know, this does exactly the same thing as count.toFixed(1) it just takes longer to type.BTW, what do you mean by "permanent float"?
Link to comment
Share on other sites

....BTW, what do you mean by "permanent float"?
With..
<script type="text/javascript">var count=0;for (count=0;count<50;count+=2.4)    {        document.write("Testing to see if this works for me. "+ count.toFixed(1) +" I hope it does!<br />");    }</script>

When your result is say, "12" it reads as 12.0With....

<script type="text/javascript">var count=0;for (count=0;count<50;count+=2.4)    {        document.write("Testing to see if this works for me. "+ Math.round(count*10)/10 +" I hope it does!<br />");    }</script>

The same result reads as 12 without the .0 after."permanent float" is all I could think of to describe it.

Link to comment
Share on other sites

With..
<script type="text/javascript">var count=0;for (count=0;count<50;count+=2.4)    {        document.write("Testing to see if this works for me. "+ count.toFixed(1) +" I hope it does!<br />");    }</script>

When your result is say, "12" it reads as 12.0With....

<script type="text/javascript">var count=0;for (count=0;count<50;count+=2.4)    {        document.write("Testing to see if this works for me. "+ Math.round(count*10)/10 +" I hope it does!<br />");    }</script>

The same result reads as 12 without the .0 after."permanent float" is all I could think of to describe it.

because that's what round does.http://www.w3schools.com/jsref/jsref_round.asp
The round() method rounds a number to the nearest integer
if you are unfamiliar with the term integer, it is the same as saying a whole number. A whole number has no decimal places.
Link to comment
Share on other sites

With..**code**When your result is say, "12" it reads as 12.0With....**code**The same result reads as 12 without the .0 after."permanent float" is all I could think of to describe it.
Ah, I see what you mean, now. Yeah that's one of the things I don't like about JavaScript. It has no decent way to round a number to a specified digits and remove trailing 0's like the PHP round function. The fix dsonesuk suggested works in this particular situation, but in situations where you have two or more decimal points you'd probably have to write a regex to do the replacing.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...