title: Python math.pow() losing calculation percision
body: <p>My code:</p>
  
  <pre><code>import math
  
  def calculate(operator, firstValue, secondValue):
      if operator == '^':
          toReturn = math.pow(firstValue, secondValue)
      . . .
      return toReturn
  
  . . . 
  new = calculate('^', 19, 19)
  print('   is ' + str(new))
  workingStack.append(int(new))
  print('New stack is ' + str(workingStack))
  </code></pre>
  
  <p>The results are</p>
  
  <pre><code>"   is 1.9784196556603136e+24" 
  New stack is [16, 14, 1978419655660313627328512]
  </code></pre>
  
  <p>which is fine for the formatted string, but when I actually use the variable, it shows it's losing the precision of the number, as you can see it calculates math.pow(19, 19) as 1978419655660313627328512, but it should be   1978419655660313589123979.</p>
  
  <p>Here is a better way to compare them</p>
  
  <ul>
  <li>1978419655660313627328512   &lt;- Calculated value</li>
  <li>1978419655660313589123979   &lt;- True value</li>
  </ul>
  
  <p>You can see the error occurs where the scientific notation loses the precision in the printed results above. I need to be able to use the true value of the variable in other calculations.</p>
  
  <p>I have read many things about Python 3 automatically converting int to bignum, but bignum doesn't seem to be enough. I tried 19 ** 19 too. It calculates at the same wrong number.</p>
  
  <p>Can someone help me?</p>