No, I don't think there's any difference. From the attached code, it appears that numbers between around 4.7 and 18.8 can't accurately represent an "x.1" in floating point, therefore the 5.9, 6.0, and 6.1 are problems, while the 3.4, 3.5, 3.6 and 19.9, 20.0, and 20.1 are fine. Yes, the problem is that the .1 loop increment causes problems, but it's compounded by the uncertain results of using a non-zero fuzz. Here's your example, Art, with some additional formats: PROC FORMAT; VALUE fmta (fuzz=0) . = 'Missing' Low -3.499999999 = '0 - not including 3.5' 3.5 -5.999999999 = '3.5 - not including 6' 6.0 -19.99999999 = '6.0 - not including 20' 20.0- HIGH = '20 and above'; VALUE fmtb . = 'Missing' Low -3.499999999 = '0 - not including 3.5' 3.5 -5.999999999 = '3.5 - not including 6' 6.0 -19.99999999 = '6.0 - not including 20' 20.0- HIGH = '20 and above'; VALUE fmtc (fuzz=0.0000000001) . = 'Missing' Low -3.499999999 = '0 - not including 3.5' 3.5 -5.999999999 = '3.5 - not including 6' 6.0 -19.99999999 = '6.0 - not including 20' 20.0- HIGH = '20 and above'; RUN; DATA ONE; do i = 0 to 21 by 0.1; j= i; k= i; l= i; format i best19.15; format j fmta.; format k fmtb.; format l fmtc.; OUTPUT; end; RUN; Note that the "nominal" 6.0 is a problem with the fuzz=0, because it is actually less than the integer 6. Now in another example using the "less than but not equal to" format syntax: PROC FORMAT; VALUE fmta (fuzz=0) . = 'Missing' Low -< 3.5 = '0 - not including 3.5' 3.5 -< 6 = '3.5 - not including 6' 6 -< 20 = '6.0 - not including 20' 20 - HIGH = '20 and above'; VALUE fmtb . = 'Missing' Low -< 3.5 = '0 - not including 3.5' 3.5 -< 6 = '3.5 - not including 6' 6 -< 20 = '6.0 - not including 20' 20 - HIGH = '20 and above'; VALUE fmtc (fuzz=0.0000000001) . = 'Missing' Low -< 3.5 = '0 - not including 3.5' 3.5 -< 6 = '3.5 - not including 6' 6 -< 20 = '6.0 - not including 20' 20 - HIGH = '20 and above'; RUN; DATA ONE; do i = 0 to 21 by 0.1; j= i; k= i; l= i; format i best19.15; format j fmta.; format k fmtb.; format l fmtc.; OUTPUT; end; RUN; The 20 results are problematic with the fuzzed formats. It's my contention that this format syntax combined with fuzz=0 is the only combination that accurately represents all of the numbers. But I'm sure this isn't over! Tom
... View more