Scheme 方案如何运作不精确->;精确操作?
SICP中描述的Scheme程序Scheme 方案如何运作不精确->;精确操作?,scheme,inexact-arithmetic,Scheme,Inexact Arithmetic,SICP中描述的Scheme程序不精确->精确是如何运行的?精确性只是一个数字的属性:它不会改变数字本身的值。因此,对于使用标志来表示精确性的实现,不精确->精确只是在该数字上设置精确性标志。精确性只是数字的一个属性:它不会更改数字本身的值。因此,对于使用标志来表示精确性的实现,increact->exact只需在该数字上设置精确性标志。方案标准仅对如何记录精确性/不精确性给出了一些一般性限制,但大多数方案实现,直到标准R5R,都按如下操作(MIT方案,即SICP的方案“母语”也是这样工作的):
不精确->精确
是如何运行的?精确性只是一个数字的属性:它不会改变数字本身的值。因此,对于使用标志来表示精确性的实现,不精确->精确
只是在该数字上设置精确性标志。精确性只是数字的一个属性:它不会更改数字本身的值。因此,对于使用标志来表示精确性的实现,increact->exact
只需在该数字上设置精确性标志。方案标准仅对如何记录精确性/不精确性给出了一些一般性限制,但大多数方案实现,直到标准R5R,都按如下操作(MIT方案,即SICP的方案“母语”也是这样工作的):
(/13)
要准确表示,只有浮点数的方案实现必须准确表示
第二,R6RS与SICP和早期标准的传染概念不同,因为坦率地说,旧标准已被打破。方案标准仅对如何记录精确性/不精确性给出了一些一般性限制,但大多数方案实现,直到标准R5RS,都按以下方式运行(MIT方案,即SICP的方案)“母语”也是这样:
(/13)
要准确表示,只有浮点数的方案实现必须准确表示
第二,R6RS与SICP和早期标准的传染概念不同,因为坦率地说,旧标准已被破坏。这是不正确的——大多数方案实现使用IEEE 754浮点实现不精确数字,使用任意精度有理数实现精确数。这两者之间的转换不仅仅是设置一个标志。@Sam:这是一个实现细节,Scheme本身不需要它。一个实现可以自由地使用IEEE754浮点数据类型来表示精确的数字(当然,如果进一步的结果不合适,必须升级到其他数据类型,如有理数),或使用有理数表示不精确(如果愿意)。这是不正确的——大多数方案实现使用IEEE 754浮点实现不精确数字,而使用任意精度有理数实现精确数字。这两者之间的转换不仅仅是设置标志。@Sam:这是方案p不需要的实现细节一个实现可以自由地使用IEEE754浮点数据类型来表示精确的数字(当然,如果进一步的结果不合适,则必须升级到其他数据类型,如有理数),或者如果它愿意,可以使用有理数来表示不精确的数。