Each ChoiceFormat divides the range -Inf..+Inf into fCount intervals. The intervals are:
0: fChoiceLimits..fChoiceLimits 1: fChoiceLimits..fChoiceLimits ... fCount-2: fChoiceLimits[fCount-2]..fChoiceLimits[fCount-1] fCount-1: fChoiceLimits[fCount-1]..+Inf
Interval 0 is special; during formatting (mapping numbers to strings), it also contains all numbers less than fChoiceLimits, as well as NaN values.
Interval i maps to and from string fChoiceFormats[i]. When parsing (mapping strings to numbers), then intervals map to their lower limit, that is, interval i maps to fChoiceLimit[i].
The intervals may be closed, half open, or open. This affects formatting but does not affect parsing. Interval i is affected by fClosures[i] and fClosures[i+1]. If fClosures[i] is FALSE, then the value fChoiceLimits[i] is in interval i. That is, intervals i and i are:
i-1: ... x < fChoiceLimits[i] i: fChoiceLimits[i] <= x ...
If fClosures[i] is TRUE, then the value fChoiceLimits[i] is in interval i-1. That is, intervals i-1 and i are:
i-1: ... x <= fChoiceLimits[i] i: fChoiceLimits[i] < x ...
Because of the nature of interval 0, fClosures has no effect.