[過去ログ] 【まず1嫁】くだすれPython(超初心者用) その58 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
608(2): デフォルトの名無しさん [sage] 2023/02/28(火) 22:14:11.38 ID:1DbqyBOF(1/2) AAS
等号、不等号の問題じゃなく
計算誤差と有効桁数の問題じゃないのか?
理解できているならば、最初の質問の>>589589(2): デフォルトの名無しさん [sage] 2023/02/27(月) 11:18:47.80 ID:Ftjf9Ogr(1/2) AAS
しきい値を計算して、ある値がしきい値より上になるか下になるか調べたいです
浮動小数点数にはdecimal型を使うのが一番誤差がなくて間違いないと思いますが、処理に時間が掛かってしまいます
以下のようにroundで丸めて比較する方法でも問題ないでしょうか?
print(round(0.1 + 0.1 + 0.1, 10) == round(0.3, 10))
※下記サイト参照
外部リンク:note.nkmk.me
他にこのやり方を説明しているサイトが見つからなかったので気になりました
ご教示お願いいたします
で問題ない
きちんと有効桁数で計算誤差を無くすことが出来れば
等号だろうが不等号だろうが、自由に使える
あと
計算誤差でのバグが>>592592(1): デフォルトの名無しさん [sage] 2023/02/27(月) 17:12:57.82 ID:pOLDvL5X(1/2) AAS
gosa(1000)だとTrueだけど
gosa(10000)だとFalse
def gosa(n):
____a=0
____b=0
____for i in range(n):
________a=a+0.1
________b=b+1
____print (round(a,10)==round(n*0.1,10))
____print (b)
有効桁数でのバグが>>593593(1): デフォルトの名無しさん [sage] 2023/02/27(月) 17:30:22.16 ID:pOLDvL5X(2/2) AAS
gosa2(1000000)だとTrueだけど
gosa2(10000000)だとFalse
def gosa2(n):
____a=0
____b=0
____for i in range(n):
________a=round(a+0.1,10)
________b=b+1
____print (a==round(n*0.1,10))
____print (b)
でしょ、分かりづらいけど
610(1): デフォルトの名無しさん [sage] 2023/02/28(火) 23:37:33.90 ID:1DbqyBOF(2/2) AAS
>>609そんなの計算式によりけりでしょ
質問者の0.1+0.1+0.1は
round(X, 10)でもround(X, 1)でも計算誤差は無くなる
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.040s