diff options
author | chriseth <chris@ethereum.org> | 2017-09-05 01:04:12 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-05 01:04:12 +0800 |
commit | 152a0e69c4373151fe9ff6acdac6bdf40df7fd4b (patch) | |
tree | 7d3eb3bcfe331f0c26c3c4e213db39ac2a412693 | |
parent | 8283f836537cf89411ce064dcf39802e2ef0aa13 (diff) | |
parent | 435eeec5e15d94ffc2dff01dd09c8c92c697dc4e (diff) | |
download | dexon-solidity-152a0e69c4373151fe9ff6acdac6bdf40df7fd4b.tar.gz dexon-solidity-152a0e69c4373151fe9ff6acdac6bdf40df7fd4b.tar.zst dexon-solidity-152a0e69c4373151fe9ff6acdac6bdf40df7fd4b.zip |
Merge pull request #2871 from ethereum/fixedpointdocs
Explain fixed point types in docs
-rw-r--r-- | docs/frequently-asked-questions.rst | 5 | ||||
-rw-r--r-- | docs/types.rst | 33 |
2 files changed, 24 insertions, 14 deletions
diff --git a/docs/frequently-asked-questions.rst b/docs/frequently-asked-questions.rst index 9edfb4fb..f59d86e7 100644 --- a/docs/frequently-asked-questions.rst +++ b/docs/frequently-asked-questions.rst @@ -103,11 +103,6 @@ This is a limitation of the EVM and will be solved with the next protocol update Returning variably-sized data as part of an external transaction or call is fine. -How do you represent ``double``/``float`` in Solidity? -====================================================== - -This is not yet possible. - Is it possible to in-line initialize an array like so: ``string[] myarray = ["a", "b"];`` ========================================================================================= diff --git a/docs/types.rst b/docs/types.rst index d3ebfe14..3335655a 100644 --- a/docs/types.rst +++ b/docs/types.rst @@ -70,6 +70,30 @@ sign extends. Shifting by a negative amount throws a runtime exception. are going to be rounded towards zero (truncated). In other programming languages the shift right of negative values works like division with rounding down (towards negative infinity). +.. index:: ! ufixed, ! fixed, ! fixed point number + +Fixed Point Numbers +------------------- + +.. warning:: + Fixed point numbers are not fully supported by Solidity yet. They can be declared, but + cannot be assigned to or from. + +``fixed`` / ``ufixed``: Signed and unsigned fixed point number of various sizes. Keywords ``ufixedMxN`` and ``fixedMxN``, where ``M`` represent the number of bits taken by +the type and ``N`` represent how many decimal points are available. ``M`` must be divisible by 8 and goes from 8 to 256 bits. ``N`` must be between 0 and 80, inclusive. +``ufixed`` and ``fixed`` are aliases for ``ufixed128x19`` and ``fixed128x19``, respectively. + +Operators: + +* Comparisons: ``<=``, ``<``, ``==``, ``!=``, ``>=``, ``>`` (evaluate to ``bool``) +* Arithmetic operators: ``+``, ``-``, unary ``-``, unary ``+``, ``*``, ``/``, ``%`` (remainder) + +.. note:: + The main difference between floating point (``float`` and ``double`` in many languages, more precisely IEEE 754 numbers) and fixed point numbers is + that the number of bits used for the integer and the fractional part (the part after the decimal dot) is flexible in the former, while it is strictly + defined in the latter. Generally, in floating point almost the entire space is used to represent the number, while only a small number of bits define + where the decimal point is. + .. index:: address, balance, send, call, callcode, delegatecall, transfer .. _address: @@ -203,15 +227,6 @@ As a rule of thumb, use ``bytes`` for arbitrary-length raw byte data and ``strin for arbitrary-length string (UTF-8) data. If you can limit the length to a certain number of bytes, always use one of ``bytes1`` to ``bytes32`` because they are much cheaper. -.. index:: ! ufixed, ! fixed, ! fixed point number - -Fixed Point Numbers -------------------- - -.. warning:: - Fixed point numbers are not fully supported by Solidity yet. They can be declared, but - cannot be assigned to or from. - .. index:: address, literal;address .. _address_literals: |