Scheme 鸡肉方案。-如何将复数(例如:(sqrt 2))转换为整数?不考虑取整策略

Scheme 鸡肉方案。-如何将复数(例如:(sqrt 2))转换为整数?不考虑取整策略,scheme,racket,chicken-scheme,gambit,Scheme,Racket,Chicken Scheme,Gambit,我正在为鸡计划进行C扩展,并且已经准备好了所有的东西,但是我遇到了一个复杂的数字类型的问题 我的代码只能处理整数,当完成任何涉及平方根的数学运算时,我的扩展可能最终不得不处理复数 我只需要去掉小数点,得到任何接近的整数。我不担心这个的准确性 我四处查看了代码,但没有找到任何东西 谢谢 那么,您可以从header标签检查数字类型。复数是具有2个插槽的块对象;实部和虚部。然后,这些数字本身可以是ratnums、flonums、fixnums或bignums。如果你想在C语言中完成这一切,你也需要处理

我正在为鸡计划进行C扩展,并且已经准备好了所有的东西,但是我遇到了一个复杂的数字类型的问题

我的代码只能处理整数,当完成任何涉及平方根的数学运算时,我的扩展可能最终不得不处理复数

我只需要去掉小数点,得到任何接近的整数。我不担心这个的准确性

我四处查看了代码,但没有找到任何东西


谢谢

那么,您可以从header标签检查数字类型。复数是具有2个插槽的块对象;实部和虚部。然后,这些数字本身可以是ratnums、flonums、fixnums或bignums。如果你想在C语言中完成这一切,你也需要处理这些情况


将C代码声明为接受整数并在Scheme中进行任何必要的转换可能要容易得多。

用一些例子更好地解释这个问题,也许吧?2的平方根不是一个复数……如果你使用的是chicken,为什么还要标记racket和gambit?@Shawn当然是。复数是实数的超集。√2可以写成√2+0i,因此是一个复数。