Yes, if you want ith decimalDigit of integer n, 1 being least significant digit, then you shall write the division with a method like:
decimalDigitOfRank: i "Answer the ith decimal digit, i=1 being the least significant digit" ^self // (10 raisedTo: i - 1) \\ 10 However, the awfull method you proposed might be faster if your intention is to scan all digits on very large numbers, because printString is optimized. Nicolas 2011/5/2 Bernat Romagosa <tibabenfortlapala...@gmail.com>: > Ouch, understood! > Then what would be the proper way to address a decimal digit in a number? I > can only think of (bigNumber asString at: index) asNumber, which is... > awful. > > 2011/5/2 Sven Van Caekenberghe <s...@beta9.be> >> >> Bernat, >> >> On 02 May 2011, at 11:13, Bernat Romagosa wrote: >> >> > Hi, try to run the following: >> > >> > (2 raisedTo: 100000) digitAt: 1 >> > >> > The expected result (if I understood what digitAt: should return) is 9, >> > but the message returns 0 instead. In fact, it returns 0 for any index. >> > >> > Is this a bug or am I missunderstanding how digitAt: should work? >> > >> > Cheers, >> > >> > Bernat Romagosa. >> > >> > p.s. My config is Pharo 1.2 with a 'Croquet Closure Cog VM >> > [CoInterpreter VMMaker-oscog.51]' on Debian Lenny. >> >> Consider, >> >> 2 raisedTo: 32 >> >> #digitAt: for digits 1 to 4 returns 0, 5 return 1. >> From the comments you can see that the number is looked at in base 256. >> The above number thus has 5 digits in this base, four are zero and the >> highest one is one. >> Furthermore, the first digit is the lowest one. >> If you inspect the number it might become clearer. >> >> Any #digitAt: has to depend on the base you use to represent the number, >> this one doesn't, so it seems to be useful only to return internal parts of >> a number. >> >> HTH, >> >> Sven >> >> > >