On 02 Jun 2014, at 09:34, jtuc...@objektfabrik.de wrote:

> Hi,
> 
> VA Smalltalk comes with ScaledDecimal, and as far as I know, it always print 
> out the scale of a number, because it could be something like 0.5s3. And I'd 
> guess ScaledDecimal or FixedPoint are pretty common, because the use of this 
> class has been encouraged for the modelling of monetary amounts for decades 
> now.

Yes, I realise it is important in some contexts, that is why I added it now.

Apart from the class name, another issue is that 0.5s3 prints as 0.500s3 in 
Pharo, the trailing zeros are possibly not added everywhere.

> Joachim
> 
> Am 02.06.14 01:51, schrieb José Comesaña:
>> Hi Sven.
>> 
>> First of all, I know that in VisualWorks there exists a class called 
>> FixedPoint, that is (more or less) similar to ScaledDecimal (is what the 
>> class comment says). But, instead of 123.45s2, VWs writes 123.45s. 
>> NEVERTHELESS, it can read 123.45s2 with no pain.
>> 
>> There exists a Fraction type also in VW, which, I believe, uses the same 
>> notation as in Pharo.
>> 
>> I know that portability is an important issue, but, at least for me, 
>> portability from Pharo to Pharo is the most important. I depend on 
>> ScaledDecimal for an application (for storing money values -changing the 
>> storage mode is not an option now-) and need the possibility of converting 
>> it to string and reading it back. The string version is my database, that 
>> gets loaded into memory upon program start.
>> 
>> You can see here the changes I have made to STONReader >>#parseNumber:
>> 
>> parseNumber
>>  | negated number |
>>  negated := readStream peekFor: $-.
>>  number := self parseNumberInteger.
>>  (readStream peekFor: $.)
>>  ifTrue: [ number := number + self parseNumberFraction ].
>> " --------------
>>               New from here 
>> --------------
>>               "
>> 
>>  (readStream peekFor: $s)
>>  ifTrue: [ | scale | 
>>  scale := self parseNumberInteger.
>>  number := ScaledDecimal newFromNumber:  number scale: scale  ].
>>  (readStream peekFor: $/)
>>  ifTrue: [ | denominator | 
>>  denominator := self parseNumberInteger.
>>  number := Fraction numerator: number denominator: denominator  ].
>> " --------------
>>               to here 
>> --------------
>>               "
>> 
>>  ((readStream peekFor: $e) or: [ readStream peekFor: $E ])
>>  ifTrue: [ number := number * self parseNumberExponent ].
>>  negated
>>  ifTrue: [ number := number negated ].
>>  self consumeWhitespace.
>>  ^ number
>> ​
>> I am a newbie about STON. I don't know if it is correct, but it  works for 
>> me, at least for some tests I have made. I know it needs improvements, 
>> thinking about strange strings we could receive. But I trust the writer not 
>> to create such weird things.
>> 
>> I could suggest another way of making the function of parseNumber (OK, OK, I 
>> know I am thinking from a Pharo-only perspective...). Seeing that number 
>> parsing always ends with this condition:
>> 
>> readStream atEnd not and: [ readStream peek isDigit ]
>> 
>> why not create a temporary string (including possibility of $e, $s, $/, even 
>> $@ ...) to that point (tmpString) and do:
>> 
>> number := Number readFromString: tmpString
>> 
>> That way, we would have a "native" parsing in each language
>> 
>> Hope this helps. If someone needs more information, pleas ask.
>> 
>> Best regards 
>> 
>> 
>> 
>> 2014-05-31 21:29 GMT+02:00 Sven Van Caekenberghe <s...@stfx.eu>:
>> Hi José,
>> 
>> On 31 May 2014, at 01:32, José Comesaña <jose.comes...@gmail.com> wrote:
>> 
>> > Wouldn't it be good if STON could save ScaledDecimals as 12345.678s?. That 
>> > way, we could read them back again as ScaledDecimal, instead of Float. I 
>> > have tried and it seems quite useful.
>> >
>> > Regards
>> 
>> That is an interesting idea and it is probably nice to have for those 
>> relying on ScaledDecimals.
>> 
>> One of the ideas of STON is to be portable across dialects, so I am 
>> wondering if ScaledDecimals exists everywhere ?
>> 
>> I am curious as to how you did it though, since STONReader basically 
>> contains its own number parser. Could you share your code ?
>> 
>> Sven
>> 
> 
> 
> -- 
> -----------------------------------------------------------------------
> Objektfabrik Joachim Tuchel          
> mailto:jtuc...@objektfabrik.de
> 
> Fliederweg 1                         
> http://www.objektfabrik.de
> 
> D-71640 Ludwigsburg                  
> http://joachimtuchel.wordpress.com
> 
> Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
> 
> 


Reply via email to