Applesoft BASIC:SQR为较小的数字返回整数,但不是较大的数字?

时间:2014-06-25 11:15:15

标签: math basic

所以,直截了当。我正在使用AppleSoft BASIC,但SQR功能存在一些问题。它似乎在使用较小的完美正方形时产生整数,但在使用较大的正方形时会浮动。例如:

我有这段代码测试一个变量是否为整数,如果是这样就打印“OK”:

] IF INT(X) = X THEN PRINT "OK"

X定义为

] X = SQR(16)

] PRINT X
4

该函数打印OK

但是,X定义为

] X = SQR(7744)

] PRINT X
88

该功能不会打印任何内容。

(请注意,]是提示,不包含在代码中。)

荒谬,不是吗?我每次都可以在我的个人Apple // e上重现它,所以你也应该能够在你的个人Apple上重现它。 (现在是1986年!每个人都应该有一个。)

SQR是否可以产生一致的结果?在SQR(16)和SQR(7744)下面是否存在某种内部差异?

  

P.S。我是S.O.的用户。已经一年多了,但不知怎的,我的帐户已经消失了。所以不,我不只是“开始”。

1 个答案:

答案 0 :(得分:0)

我挖出了一些证据/历史。从我的基本编程手册Applesoft] [(1978,Apple Computer Inc.) - 在某些地方添加了一些重点:

P18:

  

REAL,INTEGER和STRING VARIABLES

     

APPLESOFT BASIC中使用了三种不同类型的变量。   到目前为止,我们刚刚使用了一种类型 - 真正的精度。数字在这   模式显示最多九个十进制数字的精度和可能   范围可达约10至38次幂。 APPLESOFT转换   您的内部使用的数字从十进制到二进制然后   当你要求它打印答案时回到十进制。因为   舍入错误和其他不可预测的,内部数学例程   如平方根,除法和指数并不总是给出   您期望的确切数字。

     

所有算术运算都以实际精度完成。整数和   整数变量值在它们之前转换为实际精度   用于计算。 SIN,COS,ATN,TAN,SQR,   LOG,EXP和RND也将它们的参数转换为实际精度和   给出他们的结果。

P102:

  

SQR(aexpr)返回正平方根。 这是一个特别的   执行速度比^ .5

更快

所以,我认为你可能已经发现了一些“数学例程,例如平方根......并不总是给出你期望的确切数字”行为。

关于SQR是针对速度优化的“特殊实现”的说明似乎意味着可能会出现可能导致错误的问题。