2017-08-06 58 views
0

我必须在球拍中运行一些我从未使用过的运算。在球拍中定义单精度变量

我该如何强制它计算一个或一半(如果有的话)精度浮点数?

我想通了,如何使它在大彩车计算:

(bf/ (bf 1) (bf 7)) 

我知道,浮动的缩写(双精度)是FL。尽管如此,我无法弄清楚单个花车的正确缩写。

回答

1

您引用的'bigfloat'包为任意精确浮点数。正如你指出的那样,你不太可能想要这些。

这听起来像你正在寻找标准的IEEE 64位浮点数。球拍默认使用这些,对于所有不精确的算术。

所以,举例来说:

(/ 1 pi) 

产生

0.3183098861837907 

一个可能的卸料,上部是将2个有理数时,结果将再次成为一个有理数。所以,举例来说,

(/ 12347728 298340194) 

产生

6173864/149170097 

您可以通过使用exact->inexact(始终有效)强制不精确算术,或确保你的文字带有小数结尾(除非你使用htdp语言)。

所以,举例来说:

(/ 12347728.0 298340194.0) 

产生

0.04138808061511148 

让我知道这不回答你的问题....

+0

谢谢您的回答。有没有办法强制球拍计算32位或16位浮点数? – UserAnonymous

+0

您可以使用'real-> single-flonum'生成32位浮点数,或者直接将其指定为例如。 3.243f0或3f-2。我不相信16比特花车的球拍有任何支持。你可能知道你在做什么,但是在现代机器上,32或16位浮点数是个好主意的情况并不多。即使在音频应用中,64位双打似乎也在接管。希望这可以帮助! –

+0

@JohnClements精度较低的浮点开始重新出现在机器学习应用程序中。 https://arxiv.org/pdf/1412.7024.pdf,普通机器学习通常是单精度(32位),而不是双精度,因为GPU执行单精度计算。 –