Floating-point checks usually compare a difference against a tolerance instead of exact equality.

Program

Play the program to tighten or loosen the tolerance.

tolerance_compare.f90
program tolerance_compare_demo
    implicit none
    real :: expected
    real :: observed
    real :: tolerance
    real :: difference
    integer :: passed

    expected = 10.0
    observed = 9.9
    tolerance = 
    difference = abs(expected - observed)
    passed = 0
    if (difference <= tolerance) passed = 1
    print '(F0.2, 1X, F0.2, 1X, I0)', difference, tolerance, passed
end program tolerance_compare_demo
program tolerance_compare_demo
    implicit none
    real :: expected
    real :: observed
    real :: tolerance
    real :: difference
    integer :: passed

    expected = 10.0
    observed = 9.9
    tolerance = 
    difference = abs(expected - observed)
    passed = 0
    if (difference <= tolerance) passed = 1
    print '(F0.2, 1X, F0.2, 1X, I0)', difference, tolerance, passed
end program tolerance_compare_demo
program tolerance_compare_demo
    implicit none
    real :: expected
    real :: observed
    real :: tolerance
    real :: difference
    integer :: passed

    expected = 10.0
    observed = 9.9
    tolerance = 
    difference = abs(expected - observed)
    passed = 0
    if (difference <= tolerance) passed = 1
    print '(F0.2, 1X, F0.2, 1X, I0)', difference, tolerance, passed
end program tolerance_compare_demo
difference `abs(expected - observed)` measures the gap between values.
tolerance The tolerance records how much difference is acceptable.
near comparison The result passes when the difference is within tolerance.