2017-05-12 28 views
-1

誰かが説明してください、2つの操作シーケンスの下でコンピュータマシン/ハードウェア/電卓で異なる結果が生じるのはどうですか?コンピュータでの浮動小数点計算

配列1
ステップ1:1/3
ステップ2:(ステップ1の結果)* 3
回答= 1つの

配列2
ステップ1:0.3333333333(可能エントリ点で最大)
ステップ2:(ステップ1の数)* 3
回答=私の知る限り浮動番号が格納されている、またはコンピュータが正確に100%に表現できない場合に知っている0.9999999999

。シーケンス1が丸め値を生成している場合は、シーケンス2を使用してください。 1/3、2/3の処理を特別に処理するアルゴリズムはありますか?

私はこれをモバイル電卓、Windows電卓アプリ、Microsoft Excelシートで試しました。すべて同じ結果を与える。

+2

1/3が0.3333333333と異なるため... –

+0

しかし、メモリには制限があるため、.33333を格納すると切り捨てられることがあります。それでそれを別々に扱う方法 – Bhupendra

+0

あなたは何匹の食べ物を食べましたか?たとえば、1つの一般的な形式では、1/3を計算するのと同じ近似を得るためには、約16の3つの値が必要です。 –

答えて

0

多くの電卓は10進数を使用し、固定桁数を使用します。たとえば、7桁の7桁を使用して1/3を計算すると、.3333333が得られます。これは7桁に合わせて切り捨てられています。それを3倍にすると、.9999999が得られます。結果は7桁で7桁の幅に収まるため、丸めはありません。

算術演算の多くのコンピュータ実装ではバイナリが使用され、固定桁数も使用されます。たとえば、7桁の2進数で1/3を計算すると、.0101011が得られます。これも7桁の数字に合わせて丸められています。これは、丸めなければならない部分が丸められた位置で1/2以上だったために丸められました。これに3を掛けると、正確な答えは1.0000001になります。これは8桁ですので、7桁に丸めて1.000000を返します。 (この場合、丸めを行う点の端数はちょうど1/2です。そのため、丸めて次の桁が偶数なので、0になるように切り捨てます)

私は7を使用しましたこれらの例の数字だけです。一般に、コンピュータの浮動小数点演算では、小数部の場合53バイナリディジット(doubleタイプの場合、floatの場合は24)が使用されます。電卓が使用する小数点以下の桁数は変わりますが、通常は7以上です。

関連する問題