2013-05-31 37 views

Trả lời

11

Trong IPython bạn có thể sử dụng

%precision %.4g 

này sẽ in nổi các giá trị điểm người là giá trị tuyệt đối được < 1e4 hoặc> = 1e4 trong ký hiệu khoa học.

Bạn có thể tìm thêm thông tin về lệnh %precision trong IPython API Docs. Để biết các tùy chọn định dạng chuỗi, hãy xem Python Docs

+0

Tuyệt vời, cảm ơn! (Lưu ý: Tôi không nghĩ có nên có trích dẫn ở đó). Có anyway để thực hiện điều này hành vi mặc định (hoặc tải nó mỗi khi tôi chạy ipython)? – DilithiumMatrix

+1

Thêm (hoặc chỉnh sửa) dòng 'c.InteractiveShellApp.exec_lines = ['% precision% .4g']' trong tệp cấu hình của IPython. Để định vị tệp, hãy sử dụng 'ipython locate'. Trong trường hợp của tôi, nó nằm dưới '~/.ipython/profile_default/ipython_config.py' (xem [Tài liệu IPython] (http://ipython.org/ipython-doc/stable/config/overview.html#ipython-dir)) . Cảm ơn bạn đã chỉ ra các trích dẫn, tôi sẽ xóa chúng :-). – zabbarob

+1

Giải pháp này dường như không còn hoạt động nữa (IPython 2.2.0/RHEL7/Python 2.7.5). Nó tiếp tục in ra ký hiệu khoa học cho các giá trị không đáp ứng ngưỡng yêu cầu của tôi. – dg99

0

Trên thực tế nó không có gì để làm với IPython vì nó chỉ đơn giản là gọi __str__. Đáng buồn thay, float, là kiểu tích hợp, được triển khai trong C và bạn không thể nhập các loại C theo loại khỉ. Vì vậy, lựa chọn duy nhất của bạn là sửa đổi việc thực hiện __str__ trong cpython hoặc vá IPython thông minh hơn là chỉ gọi __str__.