logicalTrunc
FlexibleLearning at aol.com
FlexibleLearning at aol.com
Tue Feb 12 02:20:39 EST 2008
Eric wrote:
> function logicalTrunc n
> if n is not a number then return "NAN"
> return n - (n mod 1)
> end logicalTrunc
Sorry, Eric... MOD suffers from the same same floating point issue as TRUNC:
get (36 - 34.1) * 100 --> 190, good
put it - (it MOD 1) --> 189, bad
Avoiding them obtains the expected answer:
get logicalTrunc ((36 - 34.1) * 100) --> 190, good
function logicalTrunc n
if n is not a number then return "NAN"
set the itemDel to "."
return item 1 of n
end logicalTrunc # by Kay C Lan
or
function logicalTrunc n
if n is not a number then return "NAN"
get offset(".", n)
if it > 0 then
delete char it to -1 of n
end if
return n
end logicalTrunc # by Richard Gaskin
Bottom line:
Use TRUNC and MOD with single numbers, not with calculations
/H
More information about the Use-livecode
mailing list