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

Math Applesoft BASIC:SQR为较小的数字返回整数,但不为较大的数字返回整数?,math,basic,Math,Basic,所以,直截了当地说。我使用的是AppleSoft BASIC,但SQR函数存在一些问题。它似乎在处理较小的完美平方时产生整数,但在处理较大的完美平方时会浮动。例如: 我有一段测试变量是否为整数的代码,如果是,则打印“OK”: 当X定义为 ] X = SQR(16) ] PRINT X 4 ] X = SQR(7744) ] PRINT X 88 该函数打印OK 但是,当X被定义为 ] X = SQR(16) ] PRINT X 4 ] X = SQR(7744) ] PRINT X

所以,直截了当地说。我使用的是AppleSoft BASIC,但SQR函数存在一些问题。它似乎在处理较小的完美平方时产生整数,但在处理较大的完美平方时会浮动。例如:

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

X
定义为

] X = SQR(16)

] PRINT X
4
] X = SQR(7744)

] PRINT X
88
该函数打印
OK

但是,当
X
被定义为

] X = SQR(16)

] PRINT X
4
] X = SQR(7744)

] PRINT X
88
该函数不打印任何内容

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

荒谬,不是吗?我每次都可以在我的个人电脑上复制,所以你也可以在你的电脑上复制。(现在是1986年!每个人都应该有一个。)

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

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


我找到了一些证据/历史。从我的基本编程手册Applesoft][(1978年,苹果电脑公司)--在以下地方增加了一点强调:

p18:

实数、整数和字符串变量

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

所有的算术运算都是以实精度进行的 整型变量值在转换前转换为实际精度 函数SIN、COS、ATN、TAN、SQR、, LOG、EXP和RND还将其参数转换为实际精度和 给出他们的结果。

p102:

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

因此,我认为您可能已经发现了函数中的一些“数学例程,例如平方根…并不总是给出您期望的确切数字”行为


请注意,SQR是一种针对速度优化的“特殊实现”,这似乎意味着在引擎盖下可能会发生一些可能导致错误的事情。

在提出问题时,有一个实际问题总是有帮助的。编辑。感谢您的评论。