看到「A lightweight python3 library for arithmetic with real numbers.」這個有趣的 Python 延伸套件,可以用他進行高精度的實數運算...
一開始在 Python 3.9 環境裝,結果就跳出需要 3.10+ 的環境,想了一下,開了一個 Docker container 裝 pyenv 來測,測過以後覺得還蠻有趣的,看起來之後把預設環境變成 3.10+ 應該會裝起來用...
這個 reals 的重點在於保證顯示數字的正確性:
It allows you to compute approximations to an arbitrary degree of precision, and, contrary to most other libraries, guarantees that all digits it displays are correct.
目前支援的常數與操作有這些:
Constants: pi, e, phi
Functions related to powers: sqrt, exp, log
Operators: negation, addition, subtraction, multiplication, division, powers
Trigonometric functions: sin, sinh, csc, csch, cos, cosh, sec, sech, tan, tanh, cot, coth
用法的部份,先把 reals
拉進來:
>>> from reals import sqrt
然後用法算直覺:
>>> sqrt2 = sqrt(2) >>> sqrt2 <reals._real.Real object at 0x10d182560 (approximate value: 1.41421)>
>>> sqrt2.evaluate(10) '1.4142135624' >>> '{:.10f}'.format(sqrt2) '1.4142135624' >>> sqrt2.to_decimal(10) Decimal('1.4142135624')
不過作者有提到效能沒有處理到很好,所以應該是拿來快速做一些運算得到結果而已。