基本的なことにて、失礼します。
消費税込みの計算をしてみると、誤差が生じてしまいます。
これは、コンピュータの立て付けによるものでしょうか。
python
1price=100 2tax=0.1 3print(price*(1+tax)) 4 5# 110.00000000000001
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
はい、ふつうに書き込むと0.1
すら正確な値にはなりません。
投稿2021/03/25 01:25
総合スコア146018
0
ベストアンサー
これは、pythonという言語の問題ではなく、現在のコンピュータが使っているCPUというハードウェア(計算をする部分)が浮動小数点数を二進法で扱っていることからくる問題です。
ただし、CPuは十進計算機能も持っており、Pythonならばdecimal --- 十進固定及び浮動小数点数の算術演算を使えば、CPuの十進計算機能によって、十進数を使っている人間の感覚に合う計算も可能です。
python
1>>> from decimal import Decimal 2>>> 3>>> price=Decimal('100') 4>>> tax=Decimal('0.1') 5>>> print(price*(1+tax)) 6110.0
投稿2021/03/25 01:34
総合スコア24670
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/25 08:34
2021/03/25 08:38
2021/03/25 08:50
2021/03/25 09:07
2021/03/25 09:21
0
小数点つきの数値を扱う場合、浮動小数点数という表現が使われます
これは、2進数で小数点付き数値を表現するため、ニンゲンの世界の10進数との変換で、誤差が出てきます。
ということで、おカネの計算をする場合は、10進演算(decimalモジュール)を行うようにするようにしましょう
投稿2021/03/25 01:25
編集2021/03/25 01:29総合スコア88042
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/25 08:16