Re: Missing a Frac() function

Christoph Jopp <[email protected]> Mon, 08 Aug 2011 13:37:53 +0200
Newsgroups gmane.comp.openoffice.devel.api
Message-ID <[email protected]>
Am 08.08.2011 12:28, schrieb Johnny Rosenberg:
> 2011/8/8 Christoph Jopp <[email protected]>:
>> Hi Johnny,
>>
>> Am 07.08.2011 16:55, schrieb Johnny Rosenberg:
>>> Am I the only one who miss a Frac() function in OpenOffice.org Basic
>>> and as a cell function?
>>>
>>> I always have to use my own function, which is probably slower than a
>>> built in function would be:
>>>
>>> Function Frac(Value As Double) As Double
>>>     Frac=3DValue-Fix(Value) ' Using =E2=80=9DInt=E2=80=9D instead of =
=E2=80=9DFix=E2=80=9D doesn't work
>>> properly for negative values.
>>> End Function
>>>
>>> For example, Frac(-12.3456789) =E2=87=A8 -0.3456789
>>>
>>> I use Frac() all the time and I can't be the only one who need it, ca=
n I? Among
>>> other things it's nice for separating time from time+date, even if th=
ere are
>>> other ways to do that.
>>>
>>> In case there is a Frac() function after all, what's it called?
>>
>> The only built-in formula that comes to my mind is
>> REST(Dividend;Divisor) in German. In English this should be
>> MOD(Dividend;Divisor).
>=20
> I'm Swedish and it's REST in Swedish too=E2=80=A6 There is a web page
> somewhere (http://www.probabilityof.com/excel.shtml#30) with
> translations from Excel (and therefore also
> OpenOffice.org/LibreOffice) cell function names in English to Swedish
> and Norwegian, so giving me the English function names is always OK.
>=20
>> But it still has the Problem with the sign of
>> the Dividend.
>> For example:
>> The number in Cell B2 is 4.3459234, your formula should be =3DMOD(B2;1=
)
>> The number in B2 is 4.3459234, then the formula should be =3DMOD(B2;-1=
)
>>
>> To overcome this you could use the built-in formula VORZEICHEN(), in
>> English SIGN().
>>  In the example:
>> =3DMOD(B2;SIGN(B2)
>=20
> Thanks, works great!
> =3DREST(B2;TECKEN(B2))
>=20
> But still, there is nothing like that for OpenOffice.org Basic, is it?
> There is Mod, but it returns an Integer=E2=80=A6! So 12.3456789 Mod 1 r=
eturns
> 0. Not very useful in this case=E2=80=A6

No, the "Basic Mod" behaves different. But you can call the built-in
formula from Calc as in Koheis snippet:
http://codesnippets.services.openoffice.org/Calc/Calc.UsingBuiltinFunctio=
ns.snip

And so you get (without much sense in this context):


Function getRest( d As Double )
   svc =3D createUnoService( "com.sun.star.sheet.FunctionAccess" )
   arg =3D array( d, Sgn(d))
   getRest =3D svc.callFunction( "MOD", arg )
End Function


Again just another way. It might be more helpful for more complex
Calc-Formulas. (Here you must use the english names of the formulas)
;-)

>=20
>> Not really an improvement, just another way.
>>
>> Maybe it helps you anyway.
>>
>> Christoph
>=20
> Well, it didn't help much in this case, but at least I learned
> something, which I appreciate! =E2=98=BA
>=20
>=20
> Best regards
>=20
> Johnny Rosenberg
> =E3=82=B8=E3=83=A7=E3=83=8B=E3=83=BC=E3=83=BB=E3=83=AD=E3=83=BC=E3=82=BC=
=E3=83=B3=E3=83=90=E3=83=BC=E3=82=B0

--=20
-----------------------------------------------------------------
To unsubscribe send email to [email protected]
For additional commands send email to [email protected]
with Subject: help