-- Demonstrates a fixed point type. It stores 0.01 exactly.
-- Let's work in the domain of dollars and cents
with ada.text_io; use ada.text_io; -- Library for text output
procedure one_v2 is
-- Define a new type for Money.
-- All values of type Money will have exactly 2 decimal places
type Money is delta 0.01 digits 9;
-- Since Money is a new type, we need to create a new I/O library for it
package money_io is new ada.text_io.decimal_io(money);
use money_io; -- Allow access to routines without using package name
penny: money := 0.01;
sum: money := 0.0;
begin
for i in 1 .. 100 loop
sum := sum + penny;
end loop;
put("sum: ");
money_io.put(sum);
new_line;
put("penny: ");
money_io.put(penny);
new_line;
put("sum with nineteen decimal places: ");
put(sum, fore => 1, aft => 9, exp => 0);
new_line(2);
put("penny with nineteen decimal places: ");
put(penny, fore => 1, aft => 19, exp => 0);
new_line;
end one_v2;