123.4567 の平方根を計算するとします。
次に、小数点を十分に右にシフトして、整数の基数 (この例では 4 桁) を取得するだけです。したがって、次のことが当てはまります。
sqrt(123.4567) = (1/100) * sqrt(1234567)
つまり、知っておく必要があるのは、整数の平方根を見つける方法だけです。これについては、次のコード (C) を検討してください。
unsigned int int_sqrt (unsigned int n) {
unsigned int result = 0;
unsigned int count = 1;
for (; count*count <= n; count += 1) {
result = result + 1;
}
return result;
}
乗算をやめたい場合は、次のようにすることもできます。
unsigned int int_sqrt (unsigned int n) {
unsigned int result = 0;
unsigned int odd = 1;
unsigned int oddsum = 1;
while (oddsum <= n) {
result = result + 1;
odd = odd + 2;
oddsum = oddsum + odd;
}
return result;
}
これらは明らかに最速の方法ではありませんが、整数のみを使用し、ワード長などの特定の CPU の特性に依存しません。