Decimal.from_float
Group: conversions
Documentation
Construct a Decimal
from a Float
.
Arguments
f
: TheFloat
to construct aDecimal
from.mc
: TheMath_Context
to use to specify precision andRounding_Mode
. If aMath_Context
is used, there is a possibility of a loss of precision.
Errors
- If a
Text
argument is incorrectly formatted, aNumber_Parse_Error
is thrown. - If the construction of the Decimal results in a loss of precision, a
Loss_Of_Numeric_Precision
warning is attached. This can happen in the followoing ways:- A
Float
value is implicitly converted to aDecimal
(either by callingDecimal.from
or by passing theFloat
as a parameter of typeDecimal
) - A
Math_Context
value is explicitly passed, and the precision it specifies is not sufficient to precisely represent the argument to be converted
- A
- If an arithmetic operation is used on mixed arguments (a
Decimal
and aFloat
), anIllegal_Argument
error is thrown. - If an arithmetic operation is used on a
Decimal
that was implicitly converted from aFloat
(either by callingDecimal.from
or by passing theFloat
as a parameter of typeDecimal
), anIllegal_Argument
error is thrown. - If a floating-poing argument is
NaN
or+/- Inf
, anIllegal_Argument
error is thrown.
^ Example
Create a Decimal
from a Float
.
c = 12.345.to_decimal
^ Example
Create a Decimal
from a Float
.
c = dec 12.345
Remarks
Precision Loss
A Decimal
can represent any Float
precisely. However, some Float
literals, such as 0.1
, cannot be represented exactly to infinite
precision by a Float
. For this reason, constructing a Decimal
from
a Float
always attaches a Loss_Of_Numeric_Precision
warning to the
result.
Creating Decimal
s and Converting to Decimal
When creating a Decimal
from a literal floating-point value, the
preferred method is to express the literal as a string and use
Decimal.from_text
, since this will give a Decimal
that matches the
value precisely.
To convert a Float
or Integer
to a Decimal
, use its .to_decimal
method.
You can also use the convenience method dec
to convert any Integer
,
Float
, or Text
value to a Decimal
. dec
does not attach a
warning.