2013-05-31 9 views
9

मैं उस बिंदु को कैसे संशोधित कर सकता हूं जिस पर पाइथन वैज्ञानिक नोटेशन में प्रिंट करने का निर्णय लेता है?आईपीथॉन का डिफ़ॉल्ट वैज्ञानिक नोटेशन थ्रेसहोल्ड सेट करें

उदा। मुझे वैज्ञानिक नोटेशन में मुद्रित करने के लिए सब कुछ > 1e4 या < 1e-4 चाहिए।

अच्छा:

In [11]: 5e20 
Out[11]: 5e+20 

बुरा:

In [12]: 5e10 
Out[12]: 50000000000.0 

उत्तर

11

IPython में आप

%precision %.4g 

का उपयोग इस चल बिन्दु मूल्यों जो कर रहा है निरपेक्ष मूल्य < 1E4 या> = वैज्ञानिक अंकन में 1E4 प्रिंट होगा कर सकते हैं।

आप IPython API Docs में %precision कमांड के बारे में अधिक जानकारी प्राप्त कर सकते हैं। स्ट्रिंग स्वरूपण विकल्पों के लिए Python Docs

+0

बहुत बढ़िया है, धन्यवाद! (नोट: मुझे नहीं लगता कि वहाँ उद्धरण होना चाहिए)। क्या यह वही व्यवहार करने के लिए वैसे भी है (या जब भी मैं ipython चलाता हूं इसे लोड करता हूं)? – DilithiumMatrix

+1

आईपीथॉन की कॉन्फ़िगरेशन फ़ाइल में 'c.InteractiveShellApp.exec_lines = ['% सटीक% .4g '] पंक्ति जोड़ें (या संपादित करें)। फ़ाइल का उपयोग करने के लिए 'ipython explore' का उपयोग करें। मेरे मामले में यह '~/.ipython/profile_default/ipython_config.py' के अंतर्गत था (देखें [आईपीथन डॉक] (http://ipython.org/ipython-doc/stable/config/overview.html#ipython-dir) । उद्धरणों को इंगित करने के लिए धन्यवाद, मैं उन्हें हटा दूंगा :-)। – zabbarob

+1

यह समाधान अब काम नहीं करता है (आईपीथन 2.2.0/आरएचईएल 7/पायथन 2.7.5)। यह उन मानों के लिए वैज्ञानिक नोटेशन प्रिंट करना जारी रखता है जो मेरे अनुरोधित दहलीज को पूरा नहीं करते हैं। – dg99

0

वास्तव में यह के रूप में यह बस __str__ कॉल IPython के साथ कोई संबंध नहीं है। अफसोस की बात है, float, एक अंतर्निर्मित प्रकार होने के नाते, सी में लागू किया गया है और आप सी प्रकारों को बंदर नहीं कर सकते हैं। तो आपके एकमात्र विकल्प __str__ को कॉल करने से अधिक स्मार्टफोन होने के लिए cpython या पैचिंग आईपीथॉन में __str__ कार्यान्वयन को संशोधित कर रहे हैं।

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