<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx</link><description>It's just a shorthand for relative precision.</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634105</link><pubDate>Fri, 16 Jun 2006 17:24:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634105</guid><dc:creator>BradC</dc:creator><description>&amp;quot;Remember that 0.99999... = 1, and therefore the values &lt;br&gt;&lt;br&gt;6192069.999999991 &lt;br&gt;6192069.999999999... &lt;br&gt;&lt;br&gt;agree to fifteen significant digits, as promised.&amp;quot;&lt;br&gt;&lt;br&gt;No, you are saying that &amp;quot;0.9...&amp;quot; is the same as 0.1, which is not true. Its equivalent to 1.0. You're off by a decimal place.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634121</link><pubDate>Fri, 16 Jun 2006 17:37:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634121</guid><dc:creator>BryanK</dc:creator><description>Well, at least whoever posted that question wasn't blaming Windows. &amp;nbsp;(I hope, anyway.) &amp;nbsp;That result comes directly from the processor's floating-point computation instructions (specifically, FMUL), and the fact that the fractional part of a number is stored as a base-2 value, not a base-10 like it's written (IEEE-754).&lt;br&gt;&lt;br&gt;(In other words, you get a similar result when you represent 1/3 in writing by 0.33333333, multiply it by 3, get 0.99999999, and then claim you should get 1. &amp;nbsp;You don't get 1 because 1/3 is not exactly 0.33333333, and you don't get 6192070 because 0.6192070 is not exactly whatever bit pattern the system used for it.)&lt;br&gt;&lt;br&gt;BradC: No, he's saying that 0.9... is the same as 1. &amp;nbsp;Adding 0.9... to 6192069 gives 6192070, which is the result the user expected.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634140</link><pubDate>Fri, 16 Jun 2006 17:42:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634140</guid><dc:creator>Thomee</dc:creator><description>&amp;gt; No, you are saying that &amp;quot;0.9...&amp;quot; is the same as 0.1, which is not true. Its equivalent to 1.0. You're off by a decimal place.&lt;br&gt;&lt;br&gt;The &amp;quot;expected answer&amp;quot; is 6192070.0, which he is claiming is equivalent to 6192069.9999... &amp;nbsp;This is the same claim as claiming 1.0 is equivalent to 0.9999... &amp;nbsp;The returned result only varies from this at the 16th digit. &amp;nbsp;He's not claiming that the trailing 1 in the final result is equivalent to the repeating 9s in the expected result, just that the inaccuracy is below the 15th significant digit.</description></item><item><title>Interesting Finds: June 16, 2006 AM edition</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634148</link><pubDate>Fri, 16 Jun 2006 17:46:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634148</guid><dc:creator>Jason Haley</dc:creator><description /></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634150</link><pubDate>Fri, 16 Jun 2006 17:48:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634150</guid><dc:creator>Miles Archer</dc:creator><description>It's Microsoft's fault for choosing to base windows on buggy processors.&lt;br&gt;&lt;br&gt;;-)</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634214</link><pubDate>Fri, 16 Jun 2006 18:47:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634214</guid><dc:creator>Anon</dc:creator><description>This effect has nothing to do with significant digits and everything to do with the binary representation of floating point numbers. BryanK has it right. &lt;BR&gt;&lt;BR&gt;&lt;DIV CLASS=post&gt;[&lt;I&gt;You would have the same problem with significant digits even if you used decimal. "I compute 1.0000 / 3.0000 * 3.0000 and get 0.9999 back. But I did the computation to five significant digits, and this has none!" -Raymond&lt;/I&gt;]&lt;/DIV&gt;</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634221</link><pubDate>Fri, 16 Jun 2006 18:57:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634221</guid><dc:creator>josh</dc:creator><description>I get 6192069.999999999 in ghci... &amp;nbsp;Maybe inaccuracies in the code to covert to decimal? &amp;nbsp;A double should actually have almost 16 digits (53 bits) over most of its range.&lt;br&gt;&lt;br&gt;Of course, you have to understand that operations will eat away at that. &amp;nbsp;1 + 2^-53 - 1 has zero correct digits.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634241</link><pubDate>Fri, 16 Jun 2006 19:21:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634241</guid><dc:creator>BradC</dc:creator><description>I agree that &lt;BR&gt;6192069.99999999 1 &lt;BR&gt;6192069.99999999 9... &lt;BR&gt;agree to fifteen significant digits (simply because the first fifteen places are identical) &lt;BR&gt;&lt;BR&gt;BUT this has nothing to do with 0.99999... = 1. It appears that in the article he's saying that &lt;BR&gt;(ignore these digits)999999... &lt;BR&gt;is mathematically the same as &lt;BR&gt;(ignore these digits)100000 &lt;BR&gt;&lt;BR&gt;which is rubbish. I apologize if that's not what you're trying to say, Raymond. To expose the error, lets show one of those hidden digits, shall we? &lt;BR&gt;&lt;BR&gt;(ignore)699999... &lt;BR&gt;(ignore)610000 &lt;BR&gt;WRONG &lt;BR&gt;&lt;BR&gt;(ignore)699999... &lt;BR&gt;(ignore)700000 &lt;BR&gt;CORRECT&lt;BR&gt;&lt;BR&gt;&lt;DIV CLASS=post&gt;[&lt;I&gt;I'm saying that&lt;BR&gt;
6192070.000000000... and&lt;BR&gt;
6192069.999999999... are equal. Since&lt;BR&gt;
6192069.999999991 and&lt;BR&gt;
6192069.999999999 agree to fifteen significant digits, then you have to admit that&lt;BR&gt;
6192069.999999991 and&lt;BR&gt;
6192070.000000000 also agree to fifteen significant digits. -Raymond&lt;/I&gt;]&lt;/DIV&gt;</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634303</link><pubDate>Fri, 16 Jun 2006 20:12:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634303</guid><dc:creator>BradC</dc:creator><description>Ah &amp;nbsp; *ding* &amp;nbsp; &amp;lt;-- light bulb going on</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634326</link><pubDate>Fri, 16 Jun 2006 20:23:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634326</guid><dc:creator>Reinder</dc:creator><description>&amp;quot;Now, if you're a hyperliteralist and refuse to accept that 0.99999... = 1, then you are forced to accept that the only possible numbers of significant digits are zero and infinity. Consider a computation whose result is the value 1 exactly, and that the computation is performed to N significant digits (with N &amp;gt; 0)&amp;quot;&lt;br&gt;&lt;br&gt;1) A real hyperrealist will refuse to accept any computation that does any rounding&lt;br&gt;2) That &amp;quot;(with N &amp;gt; 0)&amp;quot; is a bit superfluous. It would take a surrealist to perform computations rounding to N ≤ 0 digits.&lt;br&gt;</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634327</link><pubDate>Fri, 16 Jun 2006 20:24:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634327</guid><dc:creator>Ray Trent</dc:creator><description>I have the same chance of winning as someone that actually purchases a lottery ticket... to 8 significant digits.&lt;br&gt;</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634335</link><pubDate>Fri, 16 Jun 2006 20:32:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634335</guid><dc:creator>JamesK</dc:creator><description>I believe that there is a basic problem with all of this discussion. &amp;nbsp;The word &amp;quot;significant&amp;quot; is being confused with &amp;quot;precision.&amp;quot; &amp;nbsp;In the original question:&lt;br&gt;&lt;br&gt; &amp;nbsp; I multiplied 0.619207 by 10,000,000 ...&lt;br&gt;&lt;br&gt;there are to my eyes 7 significant digits (6 from the first number a one from the second). &amp;nbsp;This is easier to see when converted to scientific notation:&lt;br&gt;&lt;br&gt; &amp;nbsp; 6.19207 x 10^-1 * 1.0 x 10^7&lt;br&gt;&lt;br&gt;Now these 7 significant digits are multiplied using 15 digits of precision (based on the double type) which gives:&lt;br&gt;&lt;br&gt; &amp;nbsp; ... 6192069.999999991 ...&lt;br&gt;&lt;br&gt;which when rounded to 7 significant digits gives us 6192070.0 (or 6.19207 x 10^6) which is the expected result. We should not confuse the precision of the computation with the significance of the numbers.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634349</link><pubDate>Fri, 16 Jun 2006 20:49:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634349</guid><dc:creator>Mark Mullin</dc:creator><description>Oh, the joy of discrete numbers in a continous world - &amp;nbsp;I certainly have no argument with what you present, but you've left some of the neccessary formalisms (that I hazily remember) out. (I think)&lt;br&gt;&lt;br&gt;Where you declare that X − ε == X for any sufficiently small ε, don't you have to constrain the relation to being non-transitive ? &amp;nbsp;If I define ε2 as being 1/2 ε, I could then state that X − ε2 == X + ε2 for some precision that is a function of ε. &amp;nbsp;I can also state that Y − ε2 == Y + ε2 &amp;nbsp;, and then I can state that Y == X + ε2, or (rewritten) X + ε2 == X + 2ε2.&lt;br&gt;&lt;br&gt;So I can now rewrite all of this as&lt;br&gt;X - ε2 == X + ε2 == X + 2e2, but this is wrong because X - ε2 != X + 2e2.&lt;br&gt;&lt;br&gt;I remember this from courses a looooonnnnnnggg time ago - I've used it in practice in some cases where very slow moving inputs to a system were being incorrectly integrated (the theoretical sum of an infinite number of infintessimally small quantities is not zero!)&lt;br&gt;&lt;br&gt;But I can't remember the formalism that wraps around this - &amp;nbsp;I know its entangled with the discrete nature of the problem and the fact that the (effectively continous) set of results isn't transitive, but since you've wandered down this thorny garden path...... &amp;nbsp;wanna go a little further..... ?????? &amp;nbsp;In short, dealing with single instances of the discrete/continous space conundrum is pretty simple (I think) but its possible to get seriously messed up when dealing with sums and powers - &amp;nbsp;I once had a client insist that .Net was junk, because iteratively adding a penny to a sum 100B times did not produce 1B &amp;nbsp;:-) &amp;nbsp;</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634360</link><pubDate>Fri, 16 Jun 2006 20:56:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634360</guid><dc:creator>s_tec</dc:creator><description>Significant digits just give an &amp;quot;error margin,&amp;quot; which I find easier to understand than counting digits. Say you want 619207 to 15 significant digits. What you are really saying is that the answer should be 619270 plus or minus 0.000000005. Put another way, the 15th digit could be off by half either way. Some possibilities include:&lt;br&gt;&lt;br&gt;6192069.999999995 = 619207 - 0.000000005&lt;br&gt;6192069.999999997 = 619207 - 0.000000003&lt;br&gt;6192067.000000000 = 619207 - 0.000000000&lt;br&gt;6192067.000000002 = 619207 + 0.000000002&lt;br&gt;6192067.000000005 = 619207 + 0.000000005&lt;br&gt;&lt;br&gt;This implies that a number with N significant digits is completely correct when _rounded_ to N digits. There is no guarantee that the first N digits will be correct before the rounding takes place.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634450</link><pubDate>Fri, 16 Jun 2006 22:30:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634450</guid><dc:creator>David Walker</dc:creator><description>Using terminals connected to an IBM mainframe, many moons ago, the Rexx language natively did what I think they called &amp;quot;pure arithmetic&amp;quot;. &amp;nbsp;I amused myself by asking for something like 52! (52 factorial) which has about 67 digits, and Rexx displayed them all. &amp;nbsp;&lt;br&gt;&lt;br&gt;I assumed the answer was correct since it didn't end with a string of zeros.&lt;br&gt;&lt;br&gt;(Rexx was used for scripts and such... what we use DOS and vbscript/wscript for these days.)&lt;br&gt;&lt;br&gt;Rexx would also calculate and display all of the digits for 150! (about 260 digits) and I was impressed.&lt;br&gt;</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634461</link><pubDate>Fri, 16 Jun 2006 22:40:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634461</guid><dc:creator>BryanK</dc:creator><description>But, uh... 52-factorial does end in a string of zeros. &amp;nbsp;You have to multiply by 50, by 40, by 30, by 20, and by 10 (and, since those give an even number, you have to add a zero for each of the multiplications by 45, 35, 25, 15, and 5). &amp;nbsp;That's at least ten zeros, perhaps more. &amp;nbsp;:-P&lt;br&gt;&lt;br&gt;(Lisp also does bignum (they call it &amp;quot;arbitrary-precision&amp;quot;) math, BTW. &amp;nbsp;So do bc and dc, IIRC.)</description></item><item><title>Cantor had to deal with hyper-realists too</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634473</link><pubDate>Fri, 16 Jun 2006 22:57:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634473</guid><dc:creator>Maurits</dc:creator><description>The .999999.... = 1.0 argument comes up in higher math, too... and the same skeptics emerge.&lt;br&gt;&lt;br&gt;Cantor's diagonalization proof of the uncountability of [0,1] doesn't work so well in base two, because you have to worry about things like 0b0.011111... == 0b0.1 (one-half)&lt;br&gt;&lt;br&gt;The usual avoidance technique is to&lt;br&gt;1) use a higher order base than binary (like ten, which most people are familiar with :P) &lt;br&gt;2) stay away from the first digit (0) and the last digit (9)&lt;br&gt;&lt;br&gt;For example, it suffices to prove the uncountability of decimal digits that match the regex:&lt;br&gt;0\.[38]+</description></item><item><title>at least ten zeroes</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634479</link><pubDate>Fri, 16 Jun 2006 23:00:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634479</guid><dc:creator>Maurits</dc:creator><description>&amp;gt; 52-factorial ... at least ten zeros&lt;br&gt;&lt;br&gt;The number of zeros in a number can be calculated exactly by looking at the number of factors of five, and the number of factors of two... whichever is less (not considering the literal number 0)&lt;br&gt;&lt;br&gt;For factorials, there's always more powers of two, so you just count powers of five:&lt;br&gt;&lt;br&gt;5 (one)&lt;br&gt;10 (one)&lt;br&gt;15 (one)&lt;br&gt;20 (one)&lt;br&gt;25 (two)&lt;br&gt;30 (one)&lt;br&gt;35 (one)&lt;br&gt;40 (one)&lt;br&gt;45 (one)&lt;br&gt;50 (two)&lt;br&gt;&lt;br&gt;So there's twelve zeroes exactly.</description></item><item><title>oopsie</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634491</link><pubDate>Fri, 16 Jun 2006 23:10:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634491</guid><dc:creator>Maurits</dc:creator><description>Pedantic corrections:&lt;br&gt;&lt;br&gt;&amp;gt; 0\.[38]+&lt;br&gt;&lt;br&gt;^0\.[38]+$&lt;br&gt;&lt;br&gt;&amp;gt; The number of zeros in a number&lt;br&gt;&lt;br&gt;That is, the number of TRAILING zeroes. &amp;nbsp;There's no easy way to count interior zeros like the first zero in 60660000 AFAIK.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634504</link><pubDate>Fri, 16 Jun 2006 23:16:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634504</guid><dc:creator>David Walker</dc:creator><description>By &amp;quot;didn't end wit a bunch of zeros&amp;quot;, I meant that the answer Rexx gave for 52! didn't start with 15 or 20 digits of precision and end with the remaining 45 or 50 digits all being zero. &amp;nbsp;And the result of 150! didn't end with 250 zeros. &lt;br&gt;&lt;br&gt;Interesting stuff, though.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634514</link><pubDate>Fri, 16 Jun 2006 23:22:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634514</guid><dc:creator>Maurits</dc:creator><description>&amp;gt; It would take a surrealist to perform computations rounding to N ≤ 0 digits&lt;br&gt;&lt;br&gt;... well... sometimes astronomers calculate numbers with an error tolerance of an order of magnitude or two. &amp;nbsp;This is a refinement of significant digits, and by an abuse of convention could in principle be called &amp;quot;negative significant digits.&amp;quot;</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634670</link><pubDate>Sat, 17 Jun 2006 01:31:58 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634670</guid><dc:creator>Mark Sowul</dc:creator><description>Obligatory: 2+2=5 for sufficiently large values of 2&lt;br&gt;&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://en.wikipedia.org/wiki/Two_plus_two_make_five"&gt;http://en.wikipedia.org/wiki/Two_plus_two_make_five&lt;/a&gt;</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634710</link><pubDate>Sat, 17 Jun 2006 02:01:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634710</guid><dc:creator>JenK</dc:creator><description>[sarcastic] Wouldn't it be easier to just convert all measurements &amp;amp; monetary values used by everyone in the world to base 2? [/sarcastic]</description></item><item><title>make it simpler</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634717</link><pubDate>Sat, 17 Jun 2006 02:07:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634717</guid><dc:creator>Maurits</dc:creator><description>Base eight, maybe. &amp;nbsp;Most of us have eight fingers, after all.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#634788</link><pubDate>Sat, 17 Jun 2006 03:03:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634788</guid><dc:creator>Gabe</dc:creator><description>Mark Mullin, did you tell your friend that he should be using the Decimal type? It would allow him to add .01 about 10^28 times before losing precision. Anybody doing arithmetic with monetary figures should be using it.&lt;br&gt;&lt;br&gt;Indeed, if the original questioner performed 0.619207m * 10000000m with .Net, they would have gotten 6192070 as they expected.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#635028</link><pubDate>Sat, 17 Jun 2006 09:34:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:635028</guid><dc:creator>Mats Gefvert</dc:creator><description>I propose that we build a processor that works natively with fractions. :)</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#635049</link><pubDate>Sat, 17 Jun 2006 10:17:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:635049</guid><dc:creator>Rhomboid</dc:creator><description>I'm surprised nobody has linked to the classic David Goldberg paper, &amp;quot;What Every Computer Scientist Should Know About Floating-Point Arithmetic&amp;quot;.&lt;br&gt;&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://docs.sun.com/source/806-3568/ncg_goldberg.html"&gt;http://docs.sun.com/source/806-3568/ncg_goldberg.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;It is sadly true that many people these days don't really know how floating point actually works.&lt;br&gt;</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#635052</link><pubDate>Sat, 17 Jun 2006 10:23:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:635052</guid><dc:creator>Kristof</dc:creator><description>I guess the number-&amp;gt;string function is between a rock and a hard place: if it only shows 15 digits, then you could potentially print out two numbers that have the same string representation, but differ in a numeric comparison (since the 16th digit is partially significant). &lt;br&gt;&lt;br&gt;So you can either confuse people by printing out extra slightly off digits, or you can confuse people by violating a=b IFF str(a)=str(b). But then again, making exact comparisons of floating point values is kind of stupid anyway...</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#635072</link><pubDate>Sat, 17 Jun 2006 11:07:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:635072</guid><dc:creator>steveg</dc:creator><description>&amp;gt;Maurits: base 8&lt;br&gt;&lt;br&gt;Nope, you want base 12, superior to base 2, 8, 10 &amp;amp; 16 (IMO). Divides in half, quarters and thirds. Months, hours, minutes, seconds, degrees divisible by 12. &lt;br&gt;&lt;br&gt;You have 12 segments on each hand, easy to count to 144 [100 base 12] (left hand use thumb to count 1-12 [10 base 12] on your segments of the same hand (3 per finger) and use your right thumb to track the &amp;quot;10s&amp;quot; column. &lt;br&gt;&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://en.wikipedia.org/wiki/Base_12"&gt;http://en.wikipedia.org/wiki/Base_12&lt;/a&gt;&lt;br&gt;&lt;br&gt;I was amazed a years ago when I thought I was onto something new to discover it's been going for decades:&lt;br&gt;Dozenal Society of America: &lt;a rel="nofollow" target="_new" href="http://www.dozens.org/"&gt;http://www.dozens.org/&lt;/a&gt;&lt;br&gt;Dozenal Society of Great Britain: &lt;a rel="nofollow" target="_new" href="http://www.dozenalsociety.org.uk/"&gt;http://www.dozenalsociety.org.uk/&lt;/a&gt;</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#635146</link><pubDate>Sat, 17 Jun 2006 14:36:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:635146</guid><dc:creator>Ilya Birman</dc:creator><description>&amp;quot;Now, if you're a hyperliteralist and refuse to accept that 0.99999... = 1&amp;quot;&lt;br&gt;&lt;br&gt;If one refuses to accept that 0.(9) = 1, he is not hyperliteralist. He just dosn't know maths ;-) 0.(9) = 9/9, and it IS 1, no matter if you accept it or not.&lt;br&gt;&lt;br&gt;However, the resoning for the &amp;quot;hyperliteralists&amp;quot; is just sweet, enjoyed it!</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#635203</link><pubDate>Sat, 17 Jun 2006 16:06:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:635203</guid><dc:creator>::wendy::</dc:creator><description>nice entry. &amp;nbsp;What the numbers represent is much more significant to me than the decimal point placing. &amp;nbsp;For example if we are counting people the 0.619207 is not a good operationalisation (does that mean people without limbs, &amp;nbsp;any specific limb are they alive?) &amp;nbsp;where-as the 10,000,000 makes sense. &amp;nbsp;If ever you see decimal points used in research about humans.... ...trace how that decimal point arrived and what it means. &amp;nbsp;apologies for going slightly off topic, &amp;nbsp;I have 'issues' with decimal point usage in the human sciences.... &amp;nbsp; </description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#635278</link><pubDate>Sat, 17 Jun 2006 17:58:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:635278</guid><dc:creator>rolfhub</dc:creator><description>@::wendy::&lt;br&gt;Yes, of course, you always have to keep in mind what the numbers represent, and what makes sense. If you just use any mathematical method you know, without thinking about the usefulness of the results, bogus results are guaranteed.&lt;br&gt;I've found a great blog entry about it:&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/ericlippert/archive/2004/02/05/68174.aspx"&gt;http://blogs.msdn.com/ericlippert/archive/2004/02/05/68174.aspx&lt;/a&gt;&lt;br&gt;&lt;br&gt;Also, you have to always keep in mind, that just cutting of the decimal point and anything after it is seldom sensible when converting a floating point val to an int. Nearly every time, proper rounding solves the issues you would otherwise have.&lt;br&gt;&lt;br&gt;@steveg&lt;br&gt;Thank you for the interesting links, i always thought, the only numeric bases used _today_ were 2, 8, 10, 16, but now i know better :-)&lt;br&gt;&lt;br&gt;@David Walker&lt;br&gt;If Rexx impresses you, you should really try out bc (bash calculator) - &amp;quot;An arbitrary precision calculator language&amp;quot;. For all your precision needs ...&lt;br&gt;&lt;br&gt;@Maurits&lt;br&gt;&amp;quot;Most of us have eight fingers, after all.&amp;quot; - do you live in a Matt Groening cartoon? ;-)&lt;br&gt;</description></item><item><title>base 12</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#635349</link><pubDate>Sat, 17 Jun 2006 20:12:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:635349</guid><dc:creator>Maurits</dc:creator><description>@steveg: that's why there are 60 minutes in an hour, too. :)</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#635840</link><pubDate>Sun, 18 Jun 2006 08:29:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:635840</guid><dc:creator>Roger</dc:creator><description>&amp;gt; I have the same chance of winning as someone that actually purchases a lottery ticket... to 8 significant digits. &lt;br&gt;&lt;br&gt;Actually, no. The chances of winning a lottery ticket (for the sake of argument) is 1/14million, which is 0.000000071..., the chances of winning without one is 0.&lt;br&gt;&lt;br&gt;Significant digits starts on the first non-zero digit. In this case 7, so your chances are actually the same up to 0 significant digits.&lt;br&gt;&lt;br&gt;&lt;br&gt;Coming from a Physics background, nobody uses significant digits because it's misleading. (i.e. does 230 have 2 or 3 sig.fig?) Everyone uses &amp;#177; (+-) to indicate degree of certainty. It works out much less ambiguous - now if only everyone start using it... (And then built into the processor...)&lt;br&gt;&lt;br&gt;[I have a 1.537 &amp;#177; 0.003 GHz processor!]&lt;br&gt;</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#635958</link><pubDate>Sun, 18 Jun 2006 12:10:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:635958</guid><dc:creator>James</dc:creator><description>David is at risk of falling into the decimal vs binary trap there: just because the number doesn't end in a string of zeros in decimal form, does not mean it hasn't lost a load of bits from the binary. (To take a trivial example, round 1024 off to three bits of precision, and you still have 1024.)&lt;br&gt;&lt;br&gt;A small company once fell foul of this: their customer database stored credit card numbers as 'numbers' - in this case, *floating point* numbers. Slightly over 15 digits of precision, 16 digit numbers - so all their credit card numbers were rounded off, losing the last couple of bits! Worst of all, the error wasn't immediately visible: by rounding to the nearest multiple of 8 or 16, they weren't getting exact multiples of 10 (all the credit card numbers ending in 0 would have made the problem obvious much sooner).&lt;br&gt;&lt;br&gt;It had a happy ending, though: thanks to the first-step checksum on card numbers, apparently their IT guy was able to 'repair' all the numbers for them.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#636476</link><pubDate>Mon, 19 Jun 2006 05:56:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:636476</guid><dc:creator>Norman Diamond</dc:creator><description>Sunday, June 18, 2006 1:29 AM by Roger&lt;br&gt;&amp;gt;&amp;gt; I have the same chance of winning as&lt;br&gt;&amp;gt;&amp;gt; someone that actually purchases a lottery&lt;br&gt;&amp;gt;&amp;gt; ticket... to 8 significant digits. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; Actually, no.&lt;br&gt;&lt;br&gt;Roger beat me to it, but I can still add the example I was planning for Ray Trent:&lt;br&gt;000000012345&lt;br&gt;and&lt;br&gt;000000012346&lt;br&gt;are not equal to 11 significant digits, they're only equal to 4 significant digits. &amp;nbsp;(I'm not an expert on numerical analysis and mostly only know when it's time to get help from an expert, but this case seems to be an exception. &amp;nbsp;In exchange, Mr. Trent owes me one correction on device drivers, some year ^_^)&lt;br&gt;&lt;br&gt;Friday, June 16, 2006 1:49 PM by Mark Mullin &lt;br&gt;&amp;gt; Oh, the joy of discrete numbers in a&lt;br&gt;&amp;gt; continous world&lt;br&gt;&lt;br&gt;Quantum physicists disagree ^_^&lt;br&gt;&lt;br&gt;&amp;gt; Where you declare that X − ε == X for any&lt;br&gt;&amp;gt; sufficiently small ε, don't you have to&lt;br&gt;&amp;gt; constrain the relation to being&lt;br&gt;&amp;gt; non-transitive ?&lt;br&gt;&lt;br&gt;Yes. &amp;nbsp;Computational equality doesn't equal mathematical equality. &amp;nbsp;In fact, it's less equal than you thought it was.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#636640</link><pubDate>Mon, 19 Jun 2006 10:53:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:636640</guid><dc:creator>James</dc:creator><description>It means that someone is handwaving.&lt;br&gt;&lt;br&gt;Double precision IEEE floating point has 52 significant bits--and plays a trick to give 53 for normalized numbers. 53 * log10(2) is between 16 and 17, but that doesn't mean any number (in range) with 16 significant decimal digits can be exactly represented. In fact, very few can. Only those which, if expressed as a fraction in lowest terms, have a denominator that's a power of two can be... and since 10 = 5 * 2, most of the time you're out of luck.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#636868</link><pubDate>Mon, 19 Jun 2006 17:49:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:636868</guid><dc:creator>AC</dc:creator><description>&lt;br&gt;IBM works on standardizing the base 10 floating point numbers&lt;br&gt;&lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://www2.hursley.ibm.com/decimal/"&gt;http://www2.hursley.ibm.com/decimal/&lt;/a&gt;&lt;br&gt;&lt;br&gt;for a lot of non-physics calculations (e.g. money) it's much more convenient.</description></item><item><title>re: Understanding what significant digits really mean</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#637020</link><pubDate>Mon, 19 Jun 2006 20:06:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:637020</guid><dc:creator>David Walker</dc:creator><description>James: You're right, of course, but I knew from research that Rexx does &amp;quot;pure arithmetic&amp;quot; and isn't limited to 15 siginificant digits.</description></item><item><title>Tech Link Listing - August 17, 2006</title><link>http://blogs.msdn.com/oldnewthing/archive/2006/06/16/634078.aspx#704312</link><pubDate>Thu, 17 Aug 2006 17:59:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:704312</guid><dc:creator>Dan's Archive</dc:creator><description /></item></channel></rss>