type Money is delta 0.01 digits 15;
This is the declaration of a decimal fixed point type. It means values
of Money as small as 1 cent are exactly representable. Compare this to
a floating point type, which can only approximate the value of 1 cent.
You could do something like that using just plain fixed point types,
like this:
Money_Delta : constant := 0.01;
Money_First : constant := Integer'Pos (Integer'First) * Money_Delta;
Money_Last : constant := Integer'Pos (Integer'Last) * Money_Delta;
type Money is delta Money_Delta range Money_First .. Money_Last;
for Money'Small use Money_Delta;
which gives you the range you can fit in an object with the same
precision as Integer. |