- **Javascript**
(*http://www.velocityreviews.com/forums/f68-javascript.html*)

- - **very strange operation result**
(*http://www.velocityreviews.com/forums/t934605-very-strange-operation-result.html*)

very strange operation resultYou can try this in javascript:
A) alert( 1.9 * 50 ); = 95 B) alert( 2.9 * 50 ); = 145 C) alert( 3.9 * 50 ); = 195 D) alert( 4.9 * 50 ); = 245.00000000000003 E) alert( 5.9 * 50 ); = 295 Why D) = 245.00000000000003 ? Thanks, Maori. |

Re: very strange operation resultOn Feb 8, 4:20*pm, maori wrote:
> You can try this in javascript: > > A) alert( 1.9 * 50 ); * *= * 95 > B) alert( 2.9 * 50 ); * *= * 145 > C) alert( 3.9 * 50 ); * *= * 195 > D) alert( 4.9 * 50 ); * *= * 245.00000000000003 > E) alert( 5.9 * 50 ); * *= * 295 > > Why D) *= 245.00000000000003 ? Javascript's only numeric data type is an IEEE double precision floating point number. That type of number can represent many numbers precisely, and others it can only approximate. You have encountered one of the numbers that can only be approximated. This should not be an unexpected feature as it is common in systems for representing numbers. For example, a decimal representation of 1 divided by 3 is unlikely to be precise (because it would be infinitely long), while the same number can be precisely represented in base 3 as 0.1. |

Re: very strange operation resultOn Feb 8, 8:34 am, Henry <rcornf...@raindrop.co.uk> wrote:
> On Feb 8, 4:20 pm, maori wrote: > > > You can try this in javascript: > > > A) alert( 1.9 * 50 ); = 95 > > B) alert( 2.9 * 50 ); = 145 > > C) alert( 3.9 * 50 ); = 195 > > D) alert( 4.9 * 50 ); = 245.00000000000003 > > E) alert( 5.9 * 50 ); = 295 > > > Why D) = 245.00000000000003 ? > > Javascript's only numeric data type is an IEEE double precision > floating point number. That type of number can represent many numbers > precisely, and others it can only approximate. You have encountered > one of the numbers that can only be approximated. > > This should not be an unexpected feature as it is common in systems > for representing numbers. For example, a decimal representation of 1 > divided by 3 is unlikely to be precise (because it would be infinitely > long), while the same number can be precisely represented in base 3 as > 0.1. What you found did not surprise me. I've seen that kind of things for decades. The only system I can remember that didn't have that problem was the Atari 8-bit, which turned on the binary coded decimal bit in the 6502 for Atari BASIC. However, I've come across the problem in JavaScript even when multiplying and dividing integers. To me, that seems REALLY weird. For example, look where I had to use Math.round. I assume it's the division that screws me up. Without the Math.round, I get fractional turds... <pre> //------------------------------------------------------------------------------------------------------------ // combinations(n,k) // returns the combinations of k objects from a set of n objects combinations: function(n,k) { function factorial(a) { return (a<2) ? 1 : a*factorial(a-1); } return Math.round(factorial(n)/(factorial(k)*factorial(n-k))); }, </pre> |

Re: very strange operation resultAnd, how can I deal with this in javascript, please?
"Henry" <rcornford@raindrop.co.uk> escribió en el mensaje news:b94412b3-85ca-49d6-b3fb-86387322d6b4@d4g2000prg.googlegroups.com... On Feb 8, 4:20 pm, maori wrote: > You can try this in javascript: > > A) alert( 1.9 * 50 ); = 95 > B) alert( 2.9 * 50 ); = 145 > C) alert( 3.9 * 50 ); = 195 > D) alert( 4.9 * 50 ); = 245.00000000000003 > E) alert( 5.9 * 50 ); = 295 > > Why D) = 245.00000000000003 ? Javascript's only numeric data type is an IEEE double precision floating point number. That type of number can represent many numbers precisely, and others it can only approximate. You have encountered one of the numbers that can only be approximated. This should not be an unexpected feature as it is common in systems for representing numbers. For example, a decimal representation of 1 divided by 3 is unlikely to be precise (because it would be infinitely long), while the same number can be precisely represented in base 3 as 0.1. |

Re: very strange operation resulttimothytoe wrote on 08 feb 2008 in comp.lang.javascript:
> What you found did not surprise me. I've seen that kind of things for > decades. The only system I can remember that didn't have that problem > was the Atari 8-bit, which turned on the binary coded decimal bit in > the 6502 for Atari BASIC. > Central Data Basic for the Signetics/Philips 2650 microprosessor, rumoured to have been written by a youth called William Gates, usded BCD as it's standard Math engine. And there were more: <http://en.wikipedia.org/wiki/Binary-coded_decimal> It is stil used in financial programming, in the code most radio clocks in Europe receive from the Frankfurt long wave transmitter, and many other applocations. -- Evertjan. The Netherlands. (Please change the x'es to dots in my emailaddress) |

Re: very strange operation resultIn article <Xns9A3EE689DEB6Aeejj99@194.109.133.242>, "Evertjan." <exjxw.hannivoort@interxnl.net> wrote:
>timothytoe wrote on 08 feb 2008 in comp.lang.javascript: > >> What you found did not surprise me. I've seen that kind of things for >> decades. The only system I can remember that didn't have that problem >> was the Atari 8-bit, which turned on the binary coded decimal bit in >> the 6502 for Atari BASIC. Pfui. IBM mainframes -- System/360 and its descendants (S/370, 309x, 40xx, etc.) -- have had true decimal arithmetic at the hardware level for more than forty years. -- Regards, Doug Miller (alphageek at milmac dot com) It's time to throw all their damned tea in the harbor again. |

Re: very strange operation resultOn Feb 8, 4:24 pm, spamb...@milmac.com (Doug Miller) wrote:
> In article <Xns9A3EE689DEB6Aeej...@194.109.133.242>, "Evertjan." <exjxw.hannivo...@interxnl.net> wrote: > > >timothytoe wrote on 08 feb 2008 in comp.lang.javascript: > > >> What you found did not surprise me. I've seen that kind of things for > >> decades. The only system I can remember that didn't have that problem > >> was the Atari 8-bit, which turned on the binary coded decimal bit in > >> the 6502 for Atari BASIC. > > Pfui. IBM mainframes -- System/360 and its descendants (S/370, 309x, 40xx, > etc.) -- have had true decimal arithmetic at the hardware level for more than > forty years. > > -- > Regards, > Doug Miller (alphageek at milmac dot com) > > It's time to throw all their damned tea in the harbor again. I didn't say the Atari was the only one. I said it was the only one I remembered. |

Re: very strange operation resultDoug Miller wrote:
> In article <Xns9A3EE689DEB6Aeejj99@194.109.133.242>, "Evertjan." <exjxw.hannivoort@interxnl.net> wrote: >> timothytoe wrote on 08 feb 2008 in comp.lang.javascript: >> >>> What you found did not surprise me. I've seen that kind of things for >>> decades. The only system I can remember that didn't have that problem >>> was the Atari 8-bit, which turned on the binary coded decimal bit in >>> the 6502 for Atari BASIC. > Pfui. IBM mainframes -- System/360 and its descendants (S/370, 309x, 40xx, > etc.) -- have had true decimal arithmetic at the hardware level for more than > forty years. And the latest round of the z/Architecture (the current descendant), has added the new IEEE-754r decimal floating point, which Intel, unfortunately, seems to be resisting, though languages are working to add it. Before the S/360, most of IBM's product line -- the 650/707x series, the 702/705/7080 series, the 1401/1440/1460 series, the 1410/7010 series, the 350, and the 1620/1710 -- used decimal arithmetic /exclusively/, even for addressing. Only the 701/704/709/704x/709x series and the 7030 supercomputer used binary. Even the one-off NORC supercomputer used decimal. -- John W. Kennedy If Bill Gates believes in "intelligent design", why can't he apply it to Windows? |

Re: very strange operation resultOn Feb 8, 7:46 pm, timothytoe <timothy...@gmail.com> wrote:
> However, I've come across the problem in JavaScript even when > multiplying and dividing integers. To me, that seems REALLY weird. First of all, you've come across the problem in dividing integers, not in multiplying them. Multiplication doesn't change the dyadicity of decadic integers. Secondly, it is not particular Javascript problem: it is true for any machine using internal dyadic numbers while getting/outputting decadic numbers, that means for any up to moment existing or ever existed discrete computer. This is why it is always amusing to read some "sweet memory" references of the kind "and model X did not have it" :-) It is just always the programming choice what to implement: to make the output "as expected by an average user" suffering for some precision lost, or to output "as it really is but may be unexpected for an average user". Javascript uses the second approach, some environment might/may offer the first one. Basically decadic rationals is a rather small subset of real numbers, and decadic rationals being representable as dyadic rationals as well are forming even much more smaller subset of the first set (dyadic solenoid). Vulgarly speaking, only some decadic numbers can be exactly represented as a finite sequence in decimal system, and out from them only some can be represented as a finite sequence in binary system. The overall math defining all relations may be rather involving but I can post it here. From the practical point of view http://www.jibbering.com/faq/index.html#FAQ4_6 and http://www.jibbering.com/faq/index.html#FAQ4_7 do provide enough of info though I would argue with some rounding ideas in FAQ4_6 For > example, look where I had to use Math.round. I assume it's the > division that screws me up. Without the Math.round, I get fractional > turds... > > <pre> > //------------------------------------------------------------------------------------------------------------ > // combinations(n,k) > // returns the combinations of k objects from a set of n objects > combinations: function(n,k) { > function factorial(a) { > return (a<2) ? 1 : a*factorial(a-1); > } > return Math.round(factorial(n)/(factorial(k)*factorial(n-k))); > }, > </pre> |

Re: very strange operation resultIn comp.lang.javascript message <7cede433-bdb0-4fae-b55d-da5d23d3e971@p6
9g2000hsa.googlegroups.com>, Sat, 9 Feb 2008 11:50:46, VK <schools_ring@yahoo.com> posted: >though I would argue with some rounding >ideas in FAQ4_6 The code there is correct but outdated. For more recent code, go via the first link. -- (c) John Stockton, nr London, UK. ?@merlyn.demon.co.uk Turnpike v6.05 IE 6. Web <URL:http://www.merlyn.demon.co.uk/> - FAQish topics, acronyms, & links. I find MiniTrue useful for viewing/searching/altering files, at a DOS prompt; free, DOS/Win/UNIX, <URL:http://www.idiotsdelight.net/minitrue/> unsupported. |

All times are GMT. The time now is 04:32 PM. |

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.

SEO by vBSEO ©2010, Crawlability, Inc.