• 締切済み

Excelの演算誤差について教えてください。

1000以下の数値を切り捨てる場合の演算誤差を無くす方法はありますか? ありましたら、教えてください。

みんなの回答

  • chie65535
  • ベストアンサー率43% (8514/19356)
回答No.3

Excelの数値計算は、14桁以内の整数(小数点を含まない数)を扱う限り、演算誤差は発生しません。

noname#232800
noname#232800
回答No.2

誤差って計算機上の問題で、2進数の小数点は近似値で表示してます。 Excel のツールバーで ←.0 か、セルの書式設定で、表示形式、数値、小数点以下の数字でいじれます。 セルに 0.15 を入力。←.0 をクリック、0.2 って表示になります。 これは「まるめ」ではありませんが、表示上の問題として考えても、体験可能です。 「切捨」なので、演算誤差は考えなくて良いと思います。 「四捨五入」で、小数点以下3桁なら 10000倍して「5」を足し、10000分の1にすれば、誤差は無いと思います。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

数値を切り捨てる場合の、演算誤差を無くす方法はありません。 数値を切り捨てるということは、必ず演算誤差がでるということです。

関連するQ&A

  • エクセル浮動小数点演算誤差?が見えない

    エクセル2010です。 BOOK-AのシートBのE7セルに0.822という数値が入っています。 見た目も、数式バー上も0.822です。 BOOK-BのシートCのE7セルにも0.822という数値が入っています。 見た目も、数式バー上も0.822です。 ところがこれを =[B.xlsm]Sheet1!E7=E7 で比較すると、falseが返ります。 これまで浮動小数点演算誤差で、見た目がおなじでも小数点以下かなり下の方で違いケースは経験していましたが、その場合でも小数点以下の表示を20位くらいまで表示させると違いが表れました。ところが今回は小数点以下30位まで表示させても0.822000000000000000000000000000で誤差が見えません。でもfalseになります。 こんなことってあるんでしょうか?

  • C言語による演算時の誤差について

    C言語初心者でどなたかご教授お願いします。 小数点の演算を行うわけではないのですが、 演算を行う数値が大きすぎるために、double型を使用して以下の計算を行うつもりです。 計算結果はlong型(小数点以下切り捨て)です。 double a,b,c; long x; x = (long)((a*b/c/100) 例)  x=(long)((189000*105000/100000)/100) 上記のような計算を行った際でも誤差が発生する可能性があるのでしょうか?

  • 浮動小数演算での誤差の蓄積が起こっているのかどうか

    C++でプログラミングの勉強をしています. 以下の現象で悩んでいます. ある実数演算(double)をする関数A(実数パラメータxを用いた積算)を 以下の2種類の方法で用いると,結果が微妙に変わってしまいます. (1)パラメータxを微小に変化させながら,関数Aをfor文でループさせ,最後の結果を入手する.  (xを変化させても,Aの結果が変わらないようにその他の変数を初期化しているのですが・・・) (2) (1)の最終条件(パラメータxの大きさ)を同じにして,関数Aを1回のみ用いて,結果を入手する. 条件は同じはずなので,同じ結果が出て欲しいのですが, 結果が変わってしまい困っています. この場合考えられる原因としては何があるでしょうか? ・前のパラメータの時の実数演算の誤差が積み重なっている可能性はありますか? (でも,ループ中に共有している変数は必ず初期化しているのですが・・・) ソースコードは複雑なため,載せることはできません. 大変申し訳ございません. 原因としてどんなことが考えられるのかを教えて頂けると助かります. 宜しくお願い致します.

  • dounle型で計算時の誤差

    今、VC++(MFC)で、15桁の数値まで表示可能な電卓アプリを作成しています。 そこで今つまずいているのが、double型で計算したとき(演算結果が小数の場合)の誤差の問題です。 とりあえず、いろいろなHPなどの情報を見たりして、誤差問題解決を下記のようにしました。 「数値の頭(左側)から16桁目を四捨五入する」 小数の場合はほとんど誤差が生じるため、計算後、計算結果が小数ならば、必ず 上記の誤差処理を行っています。 しかしこれでは、以下の場合に不具合が出てしまいます。 ・ 0.99 999 999 999 999 ÷ 10 = 本来の答えは「0.09 999 999 999 999 9」 ⇒ しかし15桁までの表示なので、本来は「0.09 999 999 999 999」と15桁まで出力     させなくてはいけないのに、16桁目の「9」を四捨五入したせいで「0.1」という表示に     なってしまう。 16桁目を四捨五入しないと誤差をとることはできないし、でも上記の例だと正しい結果 が出力されません。 どうしたらいいのか頭を悩ませています。 何か良い解決法等あれば、ご教授お願いします!!

  • 【エクセル 演算】

    演算で例えば、 「A1の数値に5を掛けてB1に表示させる」→「もうA1の数値は必要ないのでA1セルを削除」→「B1の数値も消える(英語?が表示される)」 こんな感じになってしまい、仕方なく計算後不要な数値が残ってしまいます。  どうすればいいのでしょうか?? それと、A1の数値に5を掛けて【A1】に表示させる・・・上書きというのは可能なのでしょうか??これができれば、前述の問題も回避できるのですが・・・ 宜しくお願いします。

  • エクセルの演算式で困っています。

    エクセルの演算式で困っています。 セルC1,D1,E1,F1、G1の5個のセルに人数をそれぞれ入力します、そして、5個のセルの総計をH1のセルに入力します(G1の数値は、必然的にH1-(C1+D1+E1+F1) になると思います。 A3、A4,A5 と3個のセルに金額を入力します。 で、C3のセルに、(A3×C1÷H1)+(A3×1×5) の演算結果が出るようにしたいのです。つまり、C3のセルにこの演算結果が表示されるような演算を仕込みたいのです。 以下、同様に、C4のセルに、、(A4×C1÷H1)+(A4×1×5)の演算結果を表示したいのです。 また、D3のセルには、(A3×D1÷H1)+(A3×1×5) の演算結果が出るようにしたいのです。 以下、同様に、E3のセルには、、(A3×E1÷H1)+(A3×1×5) の演算結果が出るようにしたいのです。 こうなると、最後のG3のセルには、H1-(C1+D1+E1+F1) を演算式の一部に書かないといけなくなります。 で、私には手におえなくなったのです。 すいません、もし、これをご理解頂けたら、アドバイスを御願いできないでしょうか?

  • 演算子を使わない演算

    はじめまして、ヨロシクお願いします。 早速ですが、私は今「入力された数値を7で割った値を表示しろ」という問題に取り組んでいます。これには次の条件があります。 (1)演算子の/を使ってはいけない。 (2)繰り返し処理を使ってはならない。 という縛りがある上で計算をしたいと思っているのですが、なかなかうまくいきません。何かいい方法はないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 誤差について

    過失誤差。理論誤差。機器誤差について具体的に(数値を用いて)教えてくれませんか??

  • !(否定)演算子について

    !演算子の動きが知りたいです。 !0なら1になる !1なら0になる のは解るのですが !3など数値を入れた場合、0になるのはどの様な内部処理なのでしょうか? ビット演算 0011  ↓ 0 or 0 or 1 or 1  ↓  1  ↓  !1  ↓  0 上記と考えているのですが、アドバイスよろしくお願いします。

  • 見えない浮動小数点演算誤差?

    二つのBOOKにある表のデータの数値をVBAで比較していました。 単に各セルのValueとValueが等価かどうか=で比較しただけです。 すると見た目(表示)も数式バー上の値もまったく同じなのに相違があると判定されました。 不思議に思い、二つのBOOKにある表のデータの数値のうち違いがあると出た2つのセルを、そのまま別シートにコピー貼り付けして比較したのが添付の図です。 たとえば、BOOK-AからコピペしたB3セルの値は0.669です。 BOOK-BからコピペしたC3セルの値も0.669です。 両方とも数式バーでみましたが、間違いなく0.669です。 A3セルに =B3=C3 と入れるとTRUEが返ります。 ところが、D3セルに =B3-C3=0 と入れるとFALSEが返ります。 では、0でないなら差額はいくら?と、B11セルに=B3-C3と入れると、0が返ります。 これまで浮動小数点演算誤差で、見た目がおなじでも小数点以下かなり下の方で違いケースは経験していましたが、その場合でも小数点以下の表示を20位くらいまで表示させると違いが表れました。ところが今回は誤差が見えません。 差額確認のためVBAで Sub test01() Debug.Print Range("B3").Value = Range("C3").Value Debug.Print Range("B3").Value - Range("C3").Value Debug.Print Range("B5").Value = Range("C5").Value Debug.Print Range("B5").Value - Range("C5").Value End Sub としてみると、 False 1.11022302462516E-16 False 1.11022302462516E-16 が返りました。 エクセル2010と2016の2つで試しましたが同じ結果でした。 こんなことってあるんでしょうか? 困惑しています。