Merge branch 'fixedPointTypes' into fixedSemanticTests

This commit is contained in:
chriseth 2021-08-16 14:02:28 +02:00
commit 14293ea02a
3 changed files with 7 additions and 7 deletions

View File

@ -108,7 +108,7 @@ Division
Since the type of the result of an operation is always the type of one of
the operands, division on integers always results in an integer.
In Solidity, division rounds towards zero. This mean that ``int256(-5) / int256(2) == int256(-2)``.
In Solidity, division rounds towards zero. This means that ``int256(-5) / int256(2) == int256(-2)``.
Note that in contrast, division on :ref:`literals<rational_literals>` results in fractional values
of arbitrary precision.

View File

@ -232,8 +232,8 @@ std::string BytesUtils::formatFixedPoint(bytes const& _bytes, bool _signed, size
if (_fractionalDigits > 0)
{
size_t numDigits = decimal.length() - (negative ? 1 : 0);
if (_fractionalDigits > numDigits)
decimal.insert(negative ? 1 : 0, string(_fractionalDigits - numDigits, '0'));
if (_fractionalDigits >= numDigits)
decimal.insert(negative ? 1 : 0, string(_fractionalDigits + 1 - numDigits, '0'));
decimal.insert(decimal.length() - _fractionalDigits, ".");
}
return decimal;

View File

@ -35,11 +35,11 @@ BOOST_AUTO_TEST_CASE(format_fixed)
{
BOOST_CHECK_EQUAL(
BytesUtils::formatFixedPoint(toBigEndian(u256{0}), true, 2),
".00"
"0.00"
);
BOOST_CHECK_EQUAL(
BytesUtils::formatFixedPoint(toBigEndian(u256{1}), true, 2),
".01"
"0.01"
);
BOOST_CHECK_EQUAL(
BytesUtils::formatFixedPoint(toBigEndian(u256{123}), true, 2),
@ -47,11 +47,11 @@ BOOST_AUTO_TEST_CASE(format_fixed)
);
BOOST_CHECK_EQUAL(
BytesUtils::formatFixedPoint(toBigEndian(u256{-1}), true, 2),
"-.01"
"-0.01"
);
BOOST_CHECK_EQUAL(
BytesUtils::formatFixedPoint(toBigEndian(u256{-12}), true, 2),
"-.12"
"-0.12"
);
BOOST_CHECK_EQUAL(
BytesUtils::formatFixedPoint(toBigEndian(u256{-123}), true, 2),