2009-02-01 18 views
12

मैंने Google के माध्यम से खोज की है (शायद मैं काफी कठिन नहीं लग रहा था) लेकिन मुझे नहीं मिला कि Math.sqrt को int में कैसे बदला जाए।जावास्क्रिप्ट: int के लिए Math.sqrt कास्ट करें?

मैं पाश के लिए एक के लिए Math.sqrt उपयोग करना चाहते हैं और मुझे लगता है मैं एक पूर्णांक के रूप में यह जरूरत है लगता है, लेकिन मैं यह पता लगाने की किसी पूर्णांक पर परिणाम कास्ट करने के लिए कैसे नहीं कर पा रहे। तो मैं इसे कैसे करूं?

मैं जावा के लिए कुछ इसी तरह की कोशिश की:

(int) Math.sqrt(num); 

लेकिन यह काम नहीं किया। अपने विशिष्ट राउंडिंग जरूरतों के आधार पर अग्रिम :)

उत्तर

24

उपयोग Math.round, Math.ceil, या Math.floor में

धन्यवाद।

"गणित, मैथ.सेइल और मैथ.फ्लूर में से एक को पूर्णांक करने के लिए संख्याओं को गोल करने के लिए बेहतर है, और वांछित परिणाम के लिए जिसे 32 बिट हस्ताक्षरित पूर्णांक के रूप में व्यक्त किया जा सकता है, नीचे वर्णित बिटवाई ऑपरेशन भी उपयुक्त हो सकता है । "

-http://www.jibbering.com/faq/faq_notes/type_convert.html#tcNumber

4

Math.floor यह करना होगा। संदेह है कि आपको एक पूर्णांक पर जाने की भी आवश्यकता है, हालांकि।

Math.floor(Math.sqrt(num)); 
5

किसी ने parseInt का सुझाव दिया। यह एक स्ट्रिंग से एक int तक जाता है, लेकिन एक फ्लोट को एक स्ट्रिंग में बदलना आसान है।

parseInt(Math.sqrt(num)+"") 

याद रखें कि आप जो भी करते हैं, कोई फर्क नहीं पड़ता, जावास्क्रिप्ट हमेशा फ्लोट का उपयोग कर रहा है। कोई पूर्णांक प्रकार नहीं है।

+0

फिर से पोस्ट किए बिना अपने पुराने प्रश्न को संपादित करें। –

+0

क्षमा करें। उस समय मुझे दूसरे लड़के के जवाब पर टिप्पणी करने की प्रतिष्ठा नहीं थी, जो मैं करने की कोशिश कर रहा था। – Nosredna

+1

मुझे लगता है कि नकारात्मक वोट अनचाहे है क्योंकि नोस्रेना के पास टिप्पणी करने के लिए आवश्यक प्रतिनिधि नहीं था। Neutralized। – Cerebrus

3

parseInt(Math.sqrt(num)+"") का उपयोग Math.round(Math.sqrt(num)) का उपयोग करने से धीमा है। मुझे लगता है कि ऐसा इसलिए है क्योंकि पहले उदाहरण में आप स्ट्रिंग बना रहे हैं, num का पूर्णांक मान पार्सिंग और इसे गोल कर रहे हैं। दूसरे उदाहरण में आप केवल int और round ले लो।

0

मुझे पता है यह एक पुराने सवाल है, लेकिन मैं किसी को भी बाद में इस को खोजने के लिए आंकड़ा ....

मैं दोहराना नहीं होगा अन्य उत्तर क्या कहते हैं, लेकिन एक मजेदार थोड़ा चाल आप क्या कर सकते हैं:

Math.sqrt(2); //1.41...... 
~~Math.sqrt(2); //1 

दशमलव बिंदु के बाद डबल बिटवाई नकारात्मक नकारात्मक गिरावट। मुझे बताया गया है कि यह थोड़ा तेज है, लेकिन मैं पूरी तरह से आश्वस्त नहीं हूं।

संपादित करें: एक नोट के रूप में यह 0