-- Demonstrates floating point error with ada.text_io; use ada.text_io; -- Library for text output with ada.float_text_io; use ada.float_text_io; -- Library for floating point output with ada.integer_text_io; use ada.integer_text_io; with unchecked_conversion; procedure one_v4 is function convert is new unchecked_conversion(source => float, target => integer); point_01: constant float := 0.01; sum: float := 0.0; i, j: integer; begin for i in 1 .. 100 loop sum := sum + point_01; end loop; put("point_01 in scientific notation: "); put(point_01); new_line; put("point_01 formatted: "); put(point_01, fore => 1, aft => 9, exp => 0); -- Formatted output is easier to read new_line; put("point_01 with more decimal places: "); put(point_01, fore => 1, aft => 25, exp => 0); -- Let's examine more decimal places new_line(2); put("sum formatted: "); put(sum, fore => 1, aft => 9, exp => 0); new_line; i := convert(point_01); j := convert(sum); put(i, base => 2); new_line; put(j, base => 2); new_line; put(i, base => 16); new_line; put(j, base => 16); new_line; end one_v4;