2

我使用端口在我的 Mac 中安装了 gnu small talk。

sudo port install gst

版本是 3.2.5

gst -v
GNU Smalltalk version 3.2.5
Copyright 2009 Free Software Foundation, Inc.
Written by Steve Byrne (sbb@gnu.org) and Paolo Bonzini (bonzini@gnu.org)

它似乎工作正常,但是当我测试浮点数时,我得到了除以零的错误消息。

st> 123.323
Object: 1 error: The program attempted to divide a number by zero
ZeroDivide(Exception)>>signal (ExcHandling.st:254)
SmallInteger(Number)>>zeroDivide (SysExcept.st:1426)
Fraction>>setNumerator:setDenominator: (Fraction.st:485)
Fraction class>>numerator:denominator: (Fraction.st:66)
Fraction>>- (Fraction.st:151)
FloatD(Float)>>printOn:special: (Float.st:533)
FloatD(Float)>>printOn: (Float.st:436)
FloatD(Object)>>printString (Object.st:534)
FloatD(Object)>>printNl (Object.st:571)
st> 

我可以通过附加“e0”来绕过这个问题。

st> 123.323e0
123.323

但是,对于一些涉及浮点数的数字运算,我仍然会遇到错误。

st> 1.1 sin
Object: 1 error: The program attempted to divide a number by zero
ZeroDivide(Exception)>>signal (ExcHandling.st:254)

有时它工作正常。

st> 3.14 sin
0.0016

这有什么问题?

4

2 回答 2

1

根据Smalltalk 论坛中的一个帖子,这个问题是由使用-pie选项编译的 gst 引起的,这是许多 Linux 发行版的默认设置,也可能在 Mac 端口中。

要解决此问题,请使用以下选项编译 gst :从https://ftp.gnu.org/gnu/smalltalk/-no-pie下载 gst 3.2.5 ,解压缩 tarball,然后编译和安装

export CFLAGS='-no-pie'
export LDFLAGS='-no-pie'
./configure
make
sudo make install

该解决方案在我的 Linux Mint PC 上运行良好。

于 2021-02-20T02:16:49.810 回答
0

我想我需要将 e0 附加到所有浮点数。

st> 1.1e0 sin
0.8912074

甚至只有 e

st> 1.1e sin
0.8912074
于 2013-06-17T14:10:28.397 回答