Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Convert string 1/4 or 1/2 to numeric
Message
From
20/01/2016 13:48:34
 
 
To
20/01/2016 13:35:57
Lutz Scheffler
Lutz Scheffler Software Ingenieurbüro
Dresden, Germany
General information
Forum:
Visual FoxPro
Category:
Other
Miscellaneous
Thread ID:
01629854
Message ID:
01629996
Views:
52
>>>>>There shoud be a way using LOG10() without counting numbers, but I'm to lazy right now. (For the whole part it's INT(log10(ABS(EVL(INT(tnNumber),1))))+1 )
>>>>
>>>>Understood!
>>>>Thank you.
>>>
>>>Hi Bill,
>>>
>>>I did not found a simple way to calculater the decimal digits wit LOG.
>>>So the kludge for stuff based 2: (I had some fun with it):
>>>
>>>CLEAR
>>>
>>>?GetCommonFract_2(1)
>>>?GetCommonFract_2(0)
>>>?GetCommonFract_2(13/32)
>>>?GetCommonFract_2(0.25)
>>>?GetCommonFract_2(9/16)
>>>?GetCommonFract_2(31/16)
>>>?GetCommonFract_2(-15.125)
>>>
>>>FUNCTION GetCommonFract_2
>>> LPARAMETERS;
>>>  tnNumber
>>>
>>> LOCAL;
>>>  lnWhole,;
>>>  lnFrac,;
>>>  lnNominator
>>>
>>> llSign      = SIGN(tnNumber)=-1
>>> tnNumber    = ABS(tnNumber)
>>> lnWhole     = INT(tnNumber)
>>> lnFrac      = tnNumber-lnWhole
>>> lnNominator = 2^(LEN(RTRIM(STR(lnFrac,15,15),"0"))-1)
>>>
>>> RETURN IIF(llSign,'-','')+;
>>>  IIF(EMPTY(lnWhole),IIF(EMPTY(lnFrac),'0',''),LTRIM(STR(lnWhole,15))+' ')+;
>>>  IIF(EMPTY(lnFrac),'',LTRIM(STR(lnFrac*lnNominator,15))+'/'+LTRIM(STR(lnNominator,15)))
>>>ENDFUNC &&GetCommonFract_2
>>>
>>>
>>>Edit: added parenthesis on 2^....
>>
>>a barbaric way to decimals count
>>
>>x = 1234.12777
>>
>>? MAX(LEN(CAST(x%1 AS M))-2,0)
>>
>
>Some mixup of SET DECIMALS and SET FIXED or wathever brings it to return 2, because CAST(... returns "0,06".
>STR(n,15,15) ist the only function to securly return all decimals.

Sure ?
CAST( as memo) work .
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform