2017-09-28 1 views
2

すべての倍数は有理数([Infinity、-Infinity、NaN]の特別な値を除く)ですか?すべての二重の価値は合理的ですか?

  • 仮数は分子することができ、小数点、として表すことができる値を持っている:私は、次のロジックに基づいて、そう言って傾いています。
  • 指数を分母に変換することができ、結果は必要に応じて拡大縮小できます。

この論理は正しいですか?そうでない場合、何が問題なのですか。二重値が非合理的であることを証明する反例がありますか?

+2

はい、すべての倍数は有理数です。 –

+1

これは本当のことではありませんが、少なくともJavaで定義されているような 'double'は有限であるため、なぜ有理数で表すことができないのでしょうか。 '1/3 = 0.33333333 = 33333333/100000000'?単に私たちが有限数のビットについて話しているからです。あなたはπのような非合理なものを表現するための変更はありません。 – displayname

+0

@ Samamどのような 'Double.NaN' ?? – progyammer

答えて

3

このロジックは正しいと思われます。

コンピュータは、有理数が無限の桁数で構成されているため、メモリの有理数(double形式の場合)のみを表すことができます。

考えてみると、合理的であるかどうかを定義する関数の実行可能コードを格納することができますが、これはすべての非合理的な点では機能しません。さらに重要なのは、doubleの仕組みではありません。 。

特別な値はそうは思いません。無限は実際には数字ではないので、私はそれを合理的または非合理的と定義するのが難しいと感じます。 NaN(これは定義上、数字ではない)と同じです。

+0

"無限の数字が無限の桁数で構成されているため、コンピュータは有限の空間しか使用できません。つまり浮動小数点数の代わりに2の代わりにπをとると、限られたスペースでいくつかの*非合理的な数字を表す*。限られたスペースではなく、ダブルのフォーマットについてです。 – lexicore

+0

@lexicoreこの文は 'double'形式を前提としています。要点は、無限の数字では不合理な数字を(「ダブル」形式で)表すことができるということです。 – Neo

1

2倍のIEEE 754は2倍の正当性があります。あなたは

x = s * m * b^e 

sを持っているIEEE 754で

bは、ベース2、eは指数である、mは仮数部で、サインです。

s,m,bおよびeは整数であるため、xは合理的でなければなりません。

関連する問題