Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


Regina, thanks for your answer.

But can you tell me how to call Calc functions inside the macro?
I searched in docs and in the Google and don't found any clue.

By the way, just now I tought the possibility to rewrite math functions
using "string" to encode the number to avoid error because I remembered
BCD.  :-)



Regards

Alex Mitsio Sato



On Thu, Jul 5, 2012 at 8:27 PM, Regina Henschel <rb.henschel@t-online.de>wrote:

Hi,

alex sato schrieb:

 Hi,

I have a problem with functions I made.

Let's say I create the function:

Function Test (n)
dim r(3)
r(0)=int(n)
r(1)=n-r(0)
r(2)=r(1)*100
r(3)=int(r(2))
Test = r
End Function

Then, in a empty spreadsheet take the following steps:
-select A1:D1
-press [F2]
-Insert the formula =TEST(E1)
-press [CTRL]+[SHIFT]+[ENTER]
-insert 11,18 in E1 and see the result in cell D1

I think the result should be 18 but I'm getting 17
Where is the error?


It is the normal behavior of data type double. 11,18 has indefinite digits
in dual system. So the stored value is cut somewhere. Because there are
enough binary digits to round the dual number to 15 decimal digits, you do
not notice it. But when you subtract the integral part, the others digits
will shift left and new digits will be generated at the end, which does not
represent the original value. The calculated difference becomes a little
bit to small. After multiply with 100 you do not have 18,00 but 17,99...
And that results in 17. The problem becomes more visible, when the integral
part is larger.

You should not use Basic functions, but use Calc functions instead. They
are often tweaked to avoid such problems. You can call Calc functions
inside your Macro.

To get the first two decimal digits as integer value, it seems to be more
accurate to use
        r(3)=(n * 100) mod 100
in your macro.

Kind regards
Regina




--
For unsubscribe instructions e-mail to: users+help@global.libreoffice.**
org <users%2Bhelp@global.libreoffice.org>
Problems? http://www.libreoffice.org/**get-help/mailing-lists/how-to-**
unsubscribe/<http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/>
Posting guidelines + more: http://wiki.**documentfoundation.org/**
Netiquette <http://wiki.documentfoundation.org/Netiquette>
List archive: 
http://listarchives.**libreoffice.org/global/users/<http://listarchives.libreoffice.org/global/users/>
All messages sent to this list will be publicly archived and cannot be
deleted


-- 
For unsubscribe instructions e-mail to: users+help@global.libreoffice.org
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/global/users/
All messages sent to this list will be publicly archived and cannot be deleted

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.