ฉันเพิ่งค้นพบคุณลักษณะ ECMAScript 7 a**b
เป็นทางเลือกสำหรับMath.pow(a,b)
( อ้างอิง MDN ) และพบการสนทนาในโพสต์นั้นซึ่งเห็นได้ชัดว่าพวกเขาทำงานแตกต่างกัน ฉันได้ทดสอบใน Chrome 55 และสามารถยืนยันได้ว่าผลลัพธ์แตกต่างกัน
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`
เพื่อให้อ่านได้และหลีกเลี่ยงปัญหาตัวหนา / ตัวเอียง