🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

1016閲覧

小数点以下はpython特有の値か?

okahijiki

総合スコア404

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/10/10 01:41

編集2019/10/10 02:42

微分の高階関数に、任意のコールバック関数を入れてみました。

python

1def diff(f,x): 2 h=1e-10 3 return f(x+h)-f(x) 4 5def squared(x): 6 return x**2 7 8diff(squared,2) 9 104.000000330961484e-10 11

出力された
4.000000330961484e-10
の、小数点以下は、じっさいの値なのでしょうか、それともpython特有の値なのでしょうか。
ちょっと判断がつきませんー。どうぞご教示くださいませ。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2019/10/10 02:03

回答するのに不足ではないでしょうが、肝心の「4.000000330961484e-10 が出力されるコード」が書かれていないのは質問としてどうかと思いました。
okahijiki

2019/10/10 02:15

書き忘れてしまいました。ご指摘、ありがとうございます。 diff(squared,2) にて、出力させております。
quickquip

2019/10/10 02:30

質問は編集できるのでこの欄にではなく質問に載せましょう。(ここは"質問への追記・修正"欄ですので)
okahijiki

2019/10/10 02:42

勉強になります。重ねてのご指摘、ありがとうございます。
guest

回答2

0

ベストアンサー

小数点以下は、じっさいの値なのでしょうか、それともpython特有の値なのでしょうか。

maisumakunさんも答えていらっしゃいますが・・・

python3

1In [1]: a= 0.1 2 3In [2]: for num in range(10): 4 ...: print(a) 5 ...: a += 0.1 6 ...: 70.1 80.2 90.30000000000000004 100.4 110.5 120.6 130.7 140.7999999999999999 150.8999999999999999 160.9999999999999999 17

いずれにしても(pythonに限らず)現状の言語で浮動小数点数を扱う時は、誤差が付きものです。

投稿2019/10/10 02:15

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

okahijiki

2019/10/10 02:35

ご回答、ありがとうございました。 やってみました。同様の結果になりました。おもしろいですー。 ということは...ということで、ためしに、やってみました。 0.3 == 0.1*3 False print(0.3) 0.3 print(0,1*3) 0.30000000000000004
okahijiki

2019/10/10 05:47

URLを貼って頂きありがとうございます。C言語は、まったく不案内ですけれど...なんとなく、読めました。こんな感じでしょうか。 コンピュータは、割り当てられるビットのサイズが限られている。浮動小数点の場合、(+と−の)符号部に1ビット、指数部に8ビット、仮数部に23ビットである。小数点の2進数化では、ほとんどの場合、ケタが無限に続くので、コンピュータは値を途中で「丸め」てしまう。それが誤差となって表示される。
guest

0

小数点以下は、じっさいの値なのでしょうか、それともpython特有の値なのでしょうか。

「じっさいの値」とはどういう意味でしょうか。

Pythonに限らず、多くの環境では小数点のある数の計算を2進法の浮動小数点数で行っています。そのため、0.1すら厳密には現せず、このような誤差が生まれることとなります。

浮動小数点演算、その問題と制限

投稿2019/10/10 01:47

maisumakun

総合スコア145963

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

okahijiki

2019/10/10 02:03

失礼しました。じっさいの値とは、 hを1e-10 にしたとき、f(x+h)-f(x)は、じっさいに、4.000000330961484e-10になるのかな、と。 (数学のf(x)=x**2 の微分係数f(x)' =4ですが、このばあい、0.000000330961484e-10はハショられていた、みたいな) (pythonに限らず)2進法の浮動小数点数で行われているための誤差」ということでしょうかね。ご回答、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問