2015-10-27 12 views
6

मैं उल्का का उपयोग करता हूं। यह सर्वर और क्लाइंट दोनों पर जावास्क्रिप्ट का उपयोग करता है।Math.sin() सर्वर/क्लाइंट पर अलग-अलग परिणाम देता है?

जब मैं Math.sin(356644061314425) * 10000 चलाने मैं मिलता है:

क्लाइंट/ब्राउज़र/एप्लिकेशन

ऐसा क्यों है पर सर्वर पर -9986.46139381927 और

-9986.46115497749? मेरे द्वारा इसे कैसे रोका जा सकता है?

संपादित करें: प्रस्तावित डुप्लिकेट प्रश्न डिग्री/रेडियंस को संदर्भित करते हैं। मुझे लगता है कि मेरा रनटाइम समस्या अधिक है।

+0

इसे 3 दशमलव स्थानों को दिखाने के लिए सेट करें;) –

+0

यह संभवतः फ्लोट्स का उपयोग कर रहा है। आप जानते हैं, फ्लोट कुछ बिंदु पर सटीक नहीं हैं। –

+0

गलत परिणामों के साथ असामान्य गणित का संभावित डुप्लिकेट?] (Http://stackoverflow.com/questions/8691800/unusual-math-with-incorrect-results) –

उत्तर

6

मुझे लगता है कि "मैं इसे कैसे रोकूं?" का उत्तर है "आप नहीं कर सकते"।

"यह क्यों है?" का उत्तर यह है कि Math.sin का जावास्क्रिप्ट कार्यान्वयन निर्धारित नहीं है।

देखें http://www.ecma-international.org/ecma-262/5.1/#sec-15.8.2.16

विशेष रूप से "पाप (एक्स) एक कार्यान्वयन पर निर्भर सन्निकटन एक्स की ज्या करने के लिए देता है। तर्क रेडियन में व्यक्त किया जाता है।" (मेरे इटालिक्स)।

लेकिन मेरा प्रयोग बताता है कि वर्तमान में आधुनिक ब्राउज़र केवल दो कार्यान्वयनों में से एक का उपयोग करते हैं, क्रोम अलग-अलग ब्राउज़र (और अपेक्षाकृत अधिक सटीक) से भिन्न होता है।

संबंधित मुद्दे