我正在尝试对两个非常大的数字进行简单的减法运算。
(- 1.8305286640724363e+023 (floor 1.8305286640724363e+023))
当我这样做时,我得到的结果为 0.0。我期待输出:
(- 1.8305286640724363e+023 (floor 1.8305286640724363e+023)) => .2439521
扩展的科学记数法会给我这个答案。
183052866407243622723319.24395251 - 183052866407243622723319.00 = .2439521
我想用十进制数字表示这些数字,而不是科学记数法,这样我就可以达到预期的结果。有没有办法在 Scheme 中做到这一点?任何帮助、指导或参考将不胜感激:)
我正在为 Windows 64 位和 R5RS 语言使用 DrRacket。
编辑
我想我会尽可能具体地说明我正在执行的算术示例。
算术:
(* 271979577247970257395 0.6180339887) => 1.6809262297150285e+020
在计算器中进行相同的乘法运算时,结果为 => 168092622971502827156.7975214365
当尝试使用精确或不精确时,我得到了这个:
(exact (* 271979577247970257395 0.6180339887)) => exact: undefined;
(inexact (* 271979577247970257395 0.6180339887)) => inexact: undefined;
我想 R5RS 不支持精确/不精确?我查了一下,示例显示使用不精确->精确过程,所以我做了并得到了这个:
(inexact->exact (* 271979577247970257395 0.6180339887)) => 168092622971502854144
只是为了具体起见,我做了相反的事情:
(exact->inexact (* 271979577247970257395 0.6180339887)) => 1.6809262297150285e+020
因此,我尝试使用 Big Float,就像有人提到的那样:
(bf-precision 128)
(bf (* 271979577247970257395 0.6180339887)) => (bf 168092622971502854144)
给我与精确相同的输出。我只想保存从计算器中得到的数字,这似乎是一项非常困难的任务!很抱歉,我可能因为没有得到这个而听起来很愚蠢,请记住,我是 SCHEME 的一个极端业余爱好者。再次感谢你的帮助!:)