Here's a blog on if.
Here's a previous question about representing base-10 decimal numbers in binary floating point. The short answer is a number like .1 or .2 is represented in binary much like 1/3 is in base 10: an infinite repeating sequence of digits. It gets truncated at some point, and rounded, and might be slightly large or slightly small. (slightly is about 1e-15). In the same way that .333+.333 != .667, .1+.2 !=.3
.1+.2==.3
0 // why not? subtract them and see why they are different...
(.1 + .2) - .3
5.55111512312578e-17 // that's a really small difference
This is not specific to JMP; see the Excel comment in the second link above.
Depending how Total_money was calculated, the value near 259.85 may be 259.8500..01 or 259.8499..99 (roughly) and you might want your if statement to split the pennies at the half-way point (untested code, approximately right):
// caution: counting pennies using floating point will be painful!
if( total_money > 259.845, "5", // 259.85 and above
total_money > 139.895, "4", // 139.90 and above
total_money > 89.845, "3", // 89.85 and above
...
"0") // none of the above
The if does each test in order and uses the first true answer. The final "0" answer has no test and is the else clause of the if statement.
Craige