2

Cで10進数を有理数近似する方法を知っていますか(ラットMatlab関数と同様)?

アップデート

倍数のP/Q近似が必要な場合簡単な修正は次のようになります。

int factor=1000000;
P=floor(number*factor);
Q=factor;

エラーは(数値/係数)未満であり、無視できます。

4

2 に答える 2

3

連分数は、ある意味で最適な実数の有理数近似を計算するために使用できます。そうすれば、入力0.33333333を使用して、3333/1000ではなく1/3を取得する可能性があります。

于 2012-02-23T08:11:59.803 に答える
1

アップデートで行ったのと同じことを行うことができますが、次に上部と下部の間の最大公約数をチェックして単純化します。たとえば、あなたの方法でそれ0.5500000/1000000行うことになります。それらはの共通因子を共有している500000ので、上と下の両方をそれで割ってを得ることができます1/2Googleには、このようなhcf関数の例がたくさんあります(編集:そしてこの印象的なリスト)。

于 2012-02-23T08:04:30.490 に答える