2012-03-15 18 views
6

विंडोज 7 अजगर 3.2 पर, निम्नलिखित:संभव math.ceil() बग

print(int(math.ceil(24/10))) 

मुझे देता है '3' के रूप में उम्मीद।

सक्रिय पायथन 2.5 के साथ विंडोज सर्वर पर, यह मुझे '2' देता है।

यहां क्या समस्या है और मैं इसे कैसे हल कर सकता हूं?

यहाँ मेरी मूल कोड है:

number_of_pages = int(math.ceil(number_of_rows/number_of_rows_per_page)) 

धन्यवाद,

बैरी

+0

मुझे लगता है कि यह अजगर में एक बग नहीं है, बल्कि निचले स्तर पर है। – bigblind

उत्तर

16

पायथन 2.x disivion छोटा का उपयोग करता है, तो 24/10 का जवाब 2. है 2 की ceil अभी भी 2 है

फ़िक्स को ऑपरेटरों में से एक को फ़्लोट करने के लिए कनवर्ट करना है:

print(int(math.ceil(24.0/10))) 
+0

+1। मुझे इसे मारो ... – Jon

+0

क्या इससे बहुत भ्रम पैदा होता है? – Baz

+4

यदि आपको Int के लिए int विभाजन व्यवहार की आवश्यकता नहीं है पिछड़ा संगतता, आप '__future__ आयात प्रभाग' से ''1/2 = 0.5' होने पर उचित अर्थशास्त्र कर सकते हैं। – 9000

1

इसे आजमाएं: print(int(math.ceil(24/10.0))), यह सही मान वापस करेगा। जैसा कि इंगित किया गया है, पायथन 2.5 में अभिव्यक्ति 24/102 का मूल्यांकन करती है, क्योंकि यह एक पूर्णांक विभाजन कर रही है।

3

प्रोग्रामिंग भाषाओं की एक त्वरित अवलोकन पता चलता है कि पूर्णांक पूर्णांक से विभाजित रिटर्न

एक पूर्णांक

  • अजगर 2
  • जावा
  • C++
  • C#
  • ,210
  • माणिक
  • ocaml
  • च #
  • जाना
  • fortran

चल बिन्दु (तारांकन का मतलब है एक पूर्णांक वापस जाने के लिए विकल्प वाक्य रचना है कि वहाँ)

  • अजगर 3 *
  • जावा स्क्रिप्ट
  • php
  • पर्ल *
  • डार्ट *
  • VBScript
  • vb।शुद्ध *
  • erlang *
  • पास्कल *

कुछ और

  • clojure (रिटर्न एक अनुपात यह एक पूर्णांक वापस नहीं लौट सकते हैं) बदलने के लिए

अजगर की पसंद उस समय प्रभाग ऑपरेटर का अर्थशास्त्र quite controversial था। प्रोग्रामर और गणितज्ञों की शुरूआत में अक्सर एक पूर्णांक लौटते हुए, अनुभवी प्रोग्रामर अक्सर उसी तरह महसूस करते हैं जब उन्हें लगता है कि दो पूर्णांक विभाजित करने से फ़्लोटिंग पॉइंट वापस आ सकता है।

+0

मुझे फ्लोट स्टोर करने के लिए अनुपात का उपयोग करने का यह विचार पसंद है। क्या इसे अजगर के लिए माना जाता है? – Baz

+0

'अंश' मॉड्यूल में 'फ्रैक्शन' है। लेकिन आपको लगभग इसकी आवश्यकता नहीं है। 'दशमलव' मॉड्यूल में 'दशमलव' भी है जो एक मित्रवत फ़्लोटिंग पॉइंट के रूप में कार्य करता है। ये डेटाटाइप पूर्णांक और फ़्लोटिंग पॉइंट से स्वाभाविक रूप से धीमे होते हैं। वे भी एक ताकतवर हैं। आवश्यकतानुसार प्रयोग करें। –

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