2011-06-02 8 views
8

जब मैं का उपयोग Math.pow(9, 18) =150094635296999136क्या Math.pow (9, 18) के बीच का अंतर और है 9^18

जब मैं गूगल कैलकुलेटर 9 का उपयोग जब मैं वेब कैलक्यूलेटर 9^18 = 150094635296999121 (http://web2.0calc.com/)

का उपयोग^18 = 1.50094635 × 10^17

यह अलग क्यों है?

+2

अलग है क्योंकि:

आप सटीक उत्तर प्राप्त करने के लिए BigInteger उपयोग कर सकते हैं। –

+0

web2.0calc.com और Google कैलक्यूलेटर एक ही परिणाम दिखा रहे हैं, लेकिन अलग-अलग नोटेशन में। Google ** वैज्ञानिक ** नोटेशन में प्रदर्शित हो रहा है। वैज्ञानिक नोटेशन में कुछ सटीकता खो गई है। –

+0

देखें: http://stackoverflow.com/questions/5407298/am-i-going-crazy-on-is-math-pow-broken –

उत्तर

16

उस सीमा पर, double मानों के बीच अंतर 32 है। 150094635296999121 एक पूर्णांक के रूप में सही उत्तर है, लेकिन उस संख्या को वास्तव में double के रूप में प्रदर्शित नहीं किया जा सकता है। परिशुद्धता के

Math.pow(9, 18) == 150094635296999136 
BigInteger.valueOf(9).pow(18) == 150094635296999121 
संबंधित मुद्दे