# [api-dev] Re: Missing a Frac() function

```Am 08.08.2011 12:28, schrieb Johnny Rosenberg:
> 2011/8/8 Christoph Jopp <j...@gmx.de>:
>> 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=Value-Fix(Value) ' Using ”Int” instead of ”Fix” doesn't work
>>> properly for negative values.
>>> End Function
>>>
>>> For example, Frac(-12.3456789) ⇨ -0.3456789
>>>
>>> I use Frac() all the time and I can't be the only one who need it, can I?
>>> Among
>>> other things it's nice for separating time from time+date, even if there 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).
>
> I'm Swedish and it's REST in Swedish too… 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.
>
>> 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 =MOD(B2;1)
>> The number in B2 is 4.3459234, then the formula should be =MOD(B2;-1)
>>
>> To overcome this you could use the built-in formula VORZEICHEN(), in
>> English SIGN().
>>  In the example:
>> =MOD(B2;SIGN(B2)
>
> Thanks, works great!
> =REST(B2;TECKEN(B2))
>
> But still, there is nothing like that for OpenOffice.org Basic, is it?
> There is Mod, but it returns an Integer…! So 12.3456789 Mod 1 returns
> 0. Not very useful in this case…```
```
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.UsingBuiltinFunctions.snip

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

Function getRest( d As Double )
svc = createUnoService( "com.sun.star.sheet.FunctionAccess" )
arg = array( d, Sgn(d))
getRest = 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)
;-)

>
>> Not really an improvement, just another way.
>>
>> Maybe it helps you anyway.
>>
>> Christoph
>
> Well, it didn't help much in this case, but at least I learned
> something, which I appreciate! ☺
>
>
> Best regards
>
> Johnny Rosenberg
> ジョニー・ローゼンバーグ

--
-----------------------------------------------------------------
To unsubscribe send email to dev-unsubscr...@api.openoffice.org
For additional commands send email to sy...@api.openoffice.org
with Subject: help
```