OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

office-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Comment on ODF 1.2 OpenFormula (6.17 Rounding Functions)


6.17.1 General
reads:
  ---
Rounding functions convert an arbitrary Number into an Integer.
  ---
This is mostly false. Indeed, only INT() converts to an Integer, while
all the other functions listed allow to specify parameters that can lead
to non-Integer results.

6.17.2 CEILING
contains:
  ---
If mode is given and not equal to zero, the amount of N is rounded away
from zero to a multiple of significance and then the sign applied.
  ---
This is unclear at best:

1) "the amount of N", as far as I know, has no mathematical meaning. No
such term is listed at http://mathworld.wolfram.com/letters/A.html that
is a standard reference for mathematical terminology.

2) I assumed, using "and then the sign applied" as a hint, that "the
amount of N" means "the absolute value of N" in this context; but then,
"a multiple of significance" does not make sense for negative values of
"significance" (the "absolute value of significance" might need to be
used). On the contrary, if "the amount of N" means simply "N", then the
sentence "and then the sign applied" does not make sense. So I get a
contradiction for any interpretation I can give.

6.17.4 FLOOR
suffers from the same problem. If there is some mathematical identity
that can be used to define FLOOR based on CEILING I strongly recommend
using them instead.

6.17.7 ROUNDDOWN
says:
  ---
If Digits is zero, or absent, round to the largest decimal integer
smaller or equal to X.
  ---
which is against the informal specification and actually wrong. With
this definition, one would have ROUNDDOWN(-10.33) = -11 while it is
absolutely clear that the expected result in this context is
ROUNDDOWN(-10.33) = -10.

6.17.8 ROUNDUP
suffers from the same problem.

6.17.9 TRUNC
states:
  ---
Truncate number a to the number of digits specified by b. If b is zero,
or absent, truncate to a decimal integer. If b is positive, truncate to
the specified number of decimal places. If b is negative, truncate to
the left of the decimal point. If b is not an integer, it is truncated.
  ---
where it is possibly wrong (at least, it is inconsistent with what
OpenOffice.org does) to say "If b is not an integer, it is truncated"
for negative values of b. According to the definition, one would have
TRUNC(123.456;-1.2)=TRUNC(123.456;TRUNC(-1.2))=TRUNC(123.456;-1)=-120
while OpenOffice.org gives TRUNC(123.456;-1.2)=-100. Since I don't know
who is wrong, this comment has also been reported in the OpenOffice.org
issue tracker: http://qa.openoffice.org/issues/show_bug.cgi?id=113628

All comments refer to the version of OpenFormula currently under public review as per
http://lists.oasis-open.org/archives/tc-announce/201007/msg00004.html


Regards,
  Andrea Pescetti - Italian N-L Project Lead, OpenOffice.org



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]