.. wxPython Phoenix documentation This file was generated by Phoenix's sphinx generator and associated tools, do not edit by hand. Copyright: (c) 2011-2020 by Total Control Software License: wxWindows License .. include:: headings.inc .. currentmodule:: wx.lib.agw.floatspin .. highlight:: python .. _wx.lib.agw.floatspin.FixedPoint: ========================================================================================================================================== |phoenix_title| **wx.lib.agw.floatspin.FixedPoint** ========================================================================================================================================== FixedPoint objects support decimal arithmetic with a fixed number of digits (called the object's precision) after the decimal point. The number of digits before the decimal point is variable & unbounded. The precision is user-settable on a per-object basis when a FixedPoint is constructed, and may vary across FixedPoint objects. The precision may also be changed after construction via `FixedPoint.set_precision(p)`. Note that if the precision of a FixedPoint is reduced via :meth:`FixedPoint.set_precision() `, information may be lost to rounding. Example:: >>> x = FixedPoint("5.55") # precision defaults to 2 >>> print(x) 5.55 >>> x.set_precision(1) # round to one fraction digit >>> print(x) 5.6 >>> print(FixedPoint("5.55", 1)) # same thing setting to 1 in constructor 5.6 >>> repr(x) # returns constructor string that reproduces object exactly "FixedPoint('5.6', 1)" >>> When :class:`FixedPoint` objects of different precision are combined via + - * /, the result is computed to the larger of the inputs' precisions, which also becomes the precision of the resulting :class:`FixedPoint` object. Example:: >>> print FixedPoint("3.42") + FixedPoint("100.005", 3) 103.425 >>> When a :class:`FixedPoint` is combined with other numeric types (ints, floats, strings representing a number) via + - * /, then similarly the computation is carried out using -- and the result inherits -- the :class:`FixedPoint`'s precision. Example:: >>> print(FixedPoint(1) / 7) 0.14 >>> print(FixedPoint(1, 30) / 7) 0.142857142857142857142857142857 >>> The string produced by `str(x)` (implicitly invoked by `print`) always contains at least one digit before the decimal point, followed by a decimal point, followed by exactly `x.get_precision()` digits. If `x` is negative, `str(x)[0] == "-"`. The :class:`FixedPoint` constructor can be passed an int, long, string, float, :class:`FixedPoint`, or any object convertible to a float via `float()` or to an integer via `int()`. Passing a precision is optional; if specified, the precision must be a non-negative int. There is no inherent limit on the size of the precision, but if very very large you'll probably run out of memory. Note that conversion of floats to :class:`FixedPoint` can be surprising, and should be avoided whenever possible. Conversion from string is exact (up to final rounding to the requested precision), so is greatly preferred. Example:: >>> print(FixedPoint(1.1e30)) 1099999999999999993725589651456.00 >>> print(FixedPoint("1.1e30")) 1100000000000000000000000000000.00 >>> | |class_hierarchy| Class Hierarchy ================================= .. raw:: html
Inheritance diagram for class FixedPoint:
| |method_summary| Methods Summary ================================ ================================================================================ ================================================================================ :meth:`~wx.lib.agw.floatspin.FixedPoint.__init__` Default class constructor. :meth:`~wx.lib.agw.floatspin.FixedPoint.copy` Create a copy of the current :class:`FixedPoint`. :meth:`~wx.lib.agw.floatspin.FixedPoint.frac` Returns fractional portion as a :class:`FixedPoint`. :meth:`~wx.lib.agw.floatspin.FixedPoint.get_precision` Return the precision of this :class:`FixedPoint`. :meth:`~wx.lib.agw.floatspin.FixedPoint.set_precision` Change the precision carried by this :class:`FixedPoint` to `precision`. ================================================================================ ================================================================================ | |api| Class API =============== .. class:: FixedPoint(object) FixedPoint objects support decimal arithmetic with a fixed number of digits (called the object's precision) after the decimal point. The number of digits before the decimal point is variable & unbounded. The precision is user-settable on a per-object basis when a FixedPoint is constructed, and may vary across FixedPoint objects. The precision may also be changed after construction via `FixedPoint.set_precision(p)`. Note that if the precision of a FixedPoint is reduced via :meth:`FixedPoint.set_precision() `, information may be lost to rounding. Example:: >>> x = FixedPoint("5.55") # precision defaults to 2 >>> print(x) 5.55 >>> x.set_precision(1) # round to one fraction digit >>> print(x) 5.6 >>> print(FixedPoint("5.55", 1)) # same thing setting to 1 in constructor 5.6 >>> repr(x) # returns constructor string that reproduces object exactly "FixedPoint('5.6', 1)" >>> When :class:`FixedPoint` objects of different precision are combined via + - * /, the result is computed to the larger of the inputs' precisions, which also becomes the precision of the resulting :class:`FixedPoint` object. Example:: >>> print FixedPoint("3.42") + FixedPoint("100.005", 3) 103.425 >>> When a :class:`FixedPoint` is combined with other numeric types (ints, floats, strings representing a number) via + - * /, then similarly the computation is carried out using -- and the result inherits -- the :class:`FixedPoint`'s precision. Example:: >>> print(FixedPoint(1) / 7) 0.14 >>> print(FixedPoint(1, 30) / 7) 0.142857142857142857142857142857 >>> The string produced by `str(x)` (implicitly invoked by `print`) always contains at least one digit before the decimal point, followed by a decimal point, followed by exactly `x.get_precision()` digits. If `x` is negative, `str(x)[0] == "-"`. The :class:`FixedPoint` constructor can be passed an int, long, string, float, :class:`FixedPoint`, or any object convertible to a float via `float()` or to an integer via `int()`. Passing a precision is optional; if specified, the precision must be a non-negative int. There is no inherent limit on the size of the precision, but if very very large you'll probably run out of memory. Note that conversion of floats to :class:`FixedPoint` can be surprising, and should be avoided whenever possible. Conversion from string is exact (up to final rounding to the requested precision), so is greatly preferred. Example:: >>> print(FixedPoint(1.1e30)) 1099999999999999993725589651456.00 >>> print(FixedPoint("1.1e30")) 1100000000000000000000000000000.00 >>> .. method:: __init__(self, value=0, precision=DEFAULT_PRECISION) Default class constructor. :param `value`: the initial value; :param `precision`: must be an int >= 0, and defaults to ``DEFAULT_PRECISION``. .. method:: copy(self) Create a copy of the current :class:`FixedPoint`. .. method:: frac(self) Returns fractional portion as a :class:`FixedPoint`. .. note:: In :class:`FixedPoint`, this equality holds true:: x = x.frac() + int(x) .. method:: get_precision(self) Return the precision of this :class:`FixedPoint`. .. note:: The precision is the number of decimal digits carried after the decimal point, and is an int >= 0. .. method:: set_precision(self, precision=DEFAULT_PRECISION) Change the precision carried by this :class:`FixedPoint` to `precision`. :param `precision`: must be an int >= 0, and defaults to ``DEFAULT_PRECISION``. .. note:: If `precision` is less than this :class:`FixedPoint`'s current precision, information may be lost to rounding.