【发布时间】:2013-04-07 05:03:57
【问题描述】:
我正在尝试对两个非常大的数字进行简单的减法运算。
(- 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 的一个极端业余爱好者。再次感谢你的帮助! :)
【问题讨论】:
标签: scheme racket scientific-notation arithmetic-expressions