I have tested the following code to verify some simple numerical outputs when std::setprecision is used in C++:  double f1 = 3.1415; std::cout &lt;&lt; std::setprecision(4) &lt;&lt; f1 &lt;&lt; '\n'; double f2 = 1.2345; std::cout &lt;&lt; std::setprecision(4) &lt;&lt; f2 &lt;&lt; '\n';   The corresponding outputs are:  3.142 1.234   Why is 1.234 not being rounded to 1.235?  Furthermore, if we change f2 to 1.2315, then the rounding in the output does happen, and the output is 1.232.  Is there any rule of thumb to follow when using setprecision to format the output of numeric values?
27
Consider the following code:   0.1 + 0.2 == 0.3  -&gt;  false   0.1 + 0.2         -&gt;  0.30000000000000004   Why do these inaccuracies happen?
27536
I wish to calculate the time it took for an API to return a value. The time taken for such an action is in the space of nanoseconds. As the API is a C++ class/function, I am using the timer.h to calculate the same:   #include &lt;ctime&gt;   #include &lt;iostream&gt;    using namespace std;    int main(int argc, char** argv) {        clock_t start;       double diff;       start = clock();       diff = ( std::clock() - start ) / (double)CLOCKS_PER_SEC;       cout&lt;&lt;&quot;printf: &quot;&lt;&lt; diff &lt;&lt;'\n';        return 0;   }  The above code gives the time in seconds. How do I get the same in nano seconds and with more precision?
60259
What is the difference between decimal, float and double in .NET?  When would someone use one of these?
10205
Please, what I'm doing wrong in this test:  \documentclass{article}   \usepackage{tikz}   \begin{document} \begin{tikzpicture}  \pgfmathparse{10*2} \node at (4,-5) {$2 \cdot 10 = \pgfmathresult$};  \end{tikzpicture} \end{document}   It gives as output a line:  2 * 10 = -5.0   instead of:  2 * 10 = 20   ?
20025
Possible Duplicate:          How do you convert a C++ string to an int?  Assume you are expecting the string to have actual numbers in it ("1", "345", "38944", for example).  Also, let's assume you don't have boost, and you really want to do it the C++ way, not the crufty old C way.
70051
How can I format Floats in Java so that the float component is displayed only if it's not zero? For example:   123.45 -> 123.45 99.0   -> 99 23.2   -> 23.2 45.0   -> 45   Edit: I forgot to mention - I'm still on Java 1.4 - sorry!
43916
I have much more experience programming than I do with advanced mathematics, so perhaps this is just a comfort thing with me, but I often get frustrated when I try to follow mathematical notation. Specifically, I get frustrated trying to keep track of what each variable signifies.  As a programmer, this would be completely unacceptable no matter how many comments you added explaining it:  float A(float P, float r, float n, float t) {   return P * pow(1 + r / n, n * t); }   Yet a mathematician would have no problem with this:     $A = P\ \left(1+\dfrac{r}{n}\right)^{nt}$      where   $A$ = final amount   $P$ = principal amount (initial investment)   $r$ = annual nominal interest rate (as a decimal)   $n$ = number of times the interest is compounded per year   $t$ = number of years   So why don't I ever see the following?  $\text{final_amount} = \text{principal}\; \left(1+\dfrac{\text{interest_rate}}{\text{periods_per_yr}}\right)^{\text{periods_per_yr}\cdot\text{years}}$
28516
How do I format a number in Java? What are the &quot;Best Practices&quot;? Will I need to round a number before I format it?  32.302342342342343 =&gt; 32.30 .7323 =&gt; 0.73  etc.
42817
Possible Duplicate:          What's a way to see if a number is a ?   bool IsPerfectSquare(long input) {    // TODO }   I'm using C# but this is language agnostic.  Bonus points for clarity and simplicity (this isn't meant to be code-golf).    Edit: This got much more complex than I expected! It turns out the problems with double precision manifest themselves a couple ways. First, Math.Sqrt takes a double which can't precisely hold a long (thanks Jon).   Second, a double's precision will lose small values ( .000...00001) when you have a huge, near perfect square. e.g., my implementation failed this test for Math.Pow(10,18)+1 (mine reported true).
38011
I am developing a PHP application in which I am in need to store values bigger than 1 million, but with the flexibility of having floating points. I know the traditional float and double. I am looking to store only up to two decimal points, and will only handle operations with numbers that have 2 decimals exclusively.  I have chosen my column type of double and unsigned, but whenever I store a row with a value bigger than one million, it gets truncated to 999999.99  Why is this? I am looking for the right datatype/solution. If you could point me in the right direction, I will appreciate it a lot!  Thank you for your time in advance!  Cheers.
12352
I just came onto a project with a pretty huge code base.   I'm mostly dealing with C++ and a lot of the code they write uses double negation for their boolean logic.    if (!!variable &amp;&amp; (!!api.lookup("some-string"))) {        do_some_stuff();  }                                      I know these guys are intelligent programmers, it's obvious they aren't doing this by accident.   I'm no seasoned C++ expert, my only guess at why they are doing this is that they want to make absolutely positive that the value being evaluated is the actual boolean representation. So they negate it, then negate that again to get it back to its actual boolean value.   Is this correct, or am I missing something?
15793
Let's say we have 0.33, we need to output 1/3.  If we have 0.4, we need to output 2/5.  The idea is to make it human-readable to make the user understand "x parts out of y" as a better way of understanding data.  I know that percentages is a good substitute but I was wondering if there was a simple way to do this?
82915
For example, the standard division symbol '/' rounds to zero:  &gt;&gt;&gt; 4 / 100 0   However, I want it to return 0.04. What do I use?
16695
To use  as you would require when using the  with large numbers (100,000+), it calls for some very large calculations.  When I multiply two large numbers (eg: 62574 and 62574) PHP seems to cast the result to a float. Getting the modulus value of that returns strange values.  $x = 62574 * 62574; var_dump($x);          // float(3915505476) ... correct var_dump($x % 104659); // int(-72945)  ... wtf.   Is there any way to make PHP perform these calculations properly? Alternatively, is there another method for finding modulus values that would work for large numbers?
95140
I have the number 0.101 in binary. I want to round it to 2 places after the radix point using the algorithm rounding to the nearest. Here is how I do it.  If I want to have two places, then I will have one of the two possible resulting numbers: 0.10 or 0.11. Let's see how by how much each is different from the original:   1) 0.101 - 0.10 = 0.11  2) 0.101 - 0.11 = 0.10  The second one gives us less difference then the first, so using the algorithm rounding to the nearest, 0.101 should be rounded to 0.11. Is this how the algorithm works?
80556
What's going on?! Subtraction works fine until I get to 0.1 - 0.1. I'm in visual c# 2008 using the nonoba.com API.  Console.WriteLine("hit! " + Users[targetNum].character.health + " : " + player.character.profile.attackPower);  Users[targetNum].character.health -= player.character.profile.attackPower;  Console.WriteLine("health! " + Users[targetNum].character.health);   output:  hit! 0.1 : 0.1 health! 1.490116E-08   Thanks all - I might use the decimal type, as I'm normally adding/subtracting nice "round" numbers. For now I'll just go with:  if (Users[targetNum].character.health &lt;= 0.00001)   By the way I knew this wasn't really going to be a "bug" in c# - I thought it would either by a bug in my code or some lack of understanding, which it was.  Having read all the recommended reading, I'm going to conclude that my folly was due to normally using the ActionScript Number type, which maybe has a decimal rather than binary floating point - anyway, it would never give this output.
38145
I know, the question seems to be strange. Programmers sometimes think too much. Please read on... In C I use signed and unsigned integers a lot. I like the fact that the compiler warns me if I do things like assigning a signed integer to an unsigned variable. I get warnings if I compare signed with unsigned integers and much much more. I like these warnings. They help me to keep my code correct. Why don't we have the same luxury for floats? A square-root will definitely never return a negative number. There are other places as well where a negative float value has no meaning. Perfect candidate for an unsigned float. Btw - I'm not really keen about the single extra bit of precision that I could get by removing the sign bit from the floats. I'm super happy with floats as they are right now.  I'd just like to mark a float as unsigned sometimes and get the same kind of warnings that I get with integers. I'm not aware of any programming language that supports unsigned floating-point numbers. Any idea why they don't exist?  EDIT: I know that the x87 FPU has no instructions to deal with unsigned floats. Lets just use the signed float instructions. Misuse (e.g. going below zero) could be considered undefined behaviour in the same way as overflow of signed integers is undefined.