The following seem to be related. 1/5000 is 2e-4; 1/10000 is 1e-4 and so
all these lines should give the same result of -4. The conversion
"asExactFraction", which is called from the Float.st version of
floorLog:, causes a -5 answer which is wrong:


st>gst --version
GNU Smalltalk version 3.2.92-b033a21c

st> 1/5000 floorLog:10
-4
st> 1/10000 floorLog:10
-4
st> 1e-4 asExactFraction
13743895/137438953472
st> (1e-4 asExactFraction) floorLog:10
-5
st> (2e-4 asExactFraction) floorLog:10
-4


The problem is caused by converting 1/10000 to 13743895/137438953472,
which is just less than 1/10000, so the floor operation shifts it to
1/100000 and gets -5.

Thomas Worthington



Blake McBride writes:

> $ gst --version
> GNU Smalltalk version 3.2.92-dfe4b56
> $ gst
> GNU Smalltalk ready
>
> st> 1e1
> 10.0
> st> 1e0
> 1.0
> st> 1e-1
> 0.1
> st> 1e-2
> 0.01
> st> 1e-3
> 0.001
> st> 1e-4
> 0.00001
> st>
>
>
>
>
>
> On Sat, Aug 11, 2018 at 1:05 PM Tommy Pettersson <p...@lysator.liu.se> wrote:
>
>> Hi,
>>
>> The float 1e-4 gets too many zeros when printed. This happens on version
>> 3.2.5 and on the current master branch at git://
>> git.sv.gnu.org/smalltalk.git,
>> on both 32-bit and 64-bit.
>>
>> Example:
>> st> x := 1e-4
>> 0.00001
>> st> x+x
>> 0.0002
>>
>> Kind regards,
>> Tommy
>>
>> _______________________________________________
>> help-smalltalk mailing list
>> help-smalltalk@gnu.org
>> https://lists.gnu.org/mailman/listinfo/help-smalltalk
>>
> _______________________________________________
> help-smalltalk mailing list
> help-smalltalk@gnu.org
> https://lists.gnu.org/mailman/listinfo/help-smalltalk


_______________________________________________
help-smalltalk mailing list
help-smalltalk@gnu.org
https://lists.gnu.org/mailman/listinfo/help-smalltalk

Reply via email to