मैंने अभी ( MDN संदर्भ ) के a**b
लिए एक विकल्प के रूप में ECMAScript 7 सुविधा की खोज की है और उस पोस्ट में चर्चा में आया , जिसमें वे स्पष्ट रूप से अलग तरह से व्यवहार करते हैं। मैंने इसे क्रोम 55 में परीक्षण किया है और यह पुष्टि कर सकता है कि परिणाम भिन्न हैं।Math.pow(a,b)
Math.pow(99,99)
रिटर्न 3.697296376497263e+197
जहाँ तक
99**99
रिटर्न 3.697296376497268e+197
इसलिए अंतर को लॉग इन करने पर Math.pow(99,99) - 99**99
परिणाम सामने आता है -5.311379928167671e+182
।
अब तक यह कहा जा सकता है, कि यह बस एक और क्रियान्वयन है, लेकिन इसे एक फंक्शन में लपेटने से फिर से अलग व्यवहार होता है:
function diff(x) {
return Math.pow(x,x) - x**x;
}
कॉलिंग diff(99)
रिटर्न 0
।
ऐसा क्यों हो रहा है?
जैसा कि xszaboj ने बताया, यह इस समस्या को कम कर सकता है:
var x = 99;
x**x - 99**99; // Returns -5.311379928167671e+182
`likethis`
इसे पठनीय बनाने के लिए कोड को बैकटिक्स में रखा और बोल्ड / इटैलिक समस्या से भी बचा