最近,我在某人的编程课上遇到了一个问题。它要求他们仅使用整数来计算平方根;他们用一个整数来表示小数点之前的部分,用另一个整数来表示小数点之后的部分。问题说不允许使用 float 。
但是,经过一段时间的思考,我似乎无法想出一种不使用浮点的方法。我用 Google 搜索了很多次,但似乎找不到答案。
我开玩笑地建议我的 friend 实现一个 FPU 来做到这一点,但他并没有那么好笑。
有人知道如何解决这个问题吗?
最佳答案
假设您的原始号码是 x
。
查找小数点之前的部分很容易 - 只需找到最大数字,即小于或等于原始数字的平方即可。
将原始数字乘以 100,并将 sqrt 的整数部分乘以 10。加 1,直到小于或等于
100x
。执行n
次并在最后除以10^n
以获得截断至n
位小数的最终答案。
关于integer - 仅使用整数求平方根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16532697/