【プログラム】 python3で、y = 0.28-0.27 print(y) で計算すると誤差が出るんだけど、どうしたらいいの?

1 : 2021/10/25(月) 23:37:42.405 ID:D93xRKwF0
y = 0.28-0.27
print(y)

を実行すると

0.010000000000000009

って出てしまうんだが、どうしたらいいの?

ヒントには、100倍してから計算するとか書いてあるんだけど

y = 0.28*100-0.27*100

しても誤差がでる

0.28とか少数を書くともうfloat型が使われてしまうの?

2 : 2021/10/25(月) 23:38:13.172 ID:FTjsGebb0
誤差をなくしたいの?
4 : 2021/10/25(月) 23:39:11.145 ID:D93xRKwF0
>>2
上のような小数の計算を誤差なく行いたい
10 : 2021/10/25(月) 23:41:21.522 ID:FTjsGebb0
>>4
Rational型があるならそれを使うのが綺麗だな
ないなら、仮に直接0.01と打っても誤差は出る
3 : 2021/10/25(月) 23:38:59.720 ID:NlLZbL2BM
Int(y)みたいなやつないん?
7 : 2021/10/25(月) 23:39:35.722 ID:D93xRKwF0
>>3
それだと切り捨てみたいな感じじゃないの?
5 : 2021/10/25(月) 23:39:18.130 ID:mjwX5Vi40
decimalを使う

しらんけど

6 : 2021/10/25(月) 23:39:29.584 ID:/rZMGfBp0
decimalでググれ
8 : 2021/10/25(月) 23:39:54.649 ID:ijNLeAhO0
弟子丸
9 : 2021/10/25(月) 23:41:12.134 ID:/rZMGfBp0
y=(int(0.28*100)-int(0.27*100))/100
でもいける
13 : 2021/10/25(月) 23:43:08.569 ID:D93xRKwF0
>>9
こういう計算で、int使っても大丈夫なの?

切り捨ててるような感じがしてしまうんだけど

15 : 2021/10/25(月) 23:44:55.247 ID:mIgnNzij0
>>9
引き算は誤差が出て割り算は出ないの?
17 : 2021/10/25(月) 23:46:08.216 ID:/rZMGfBp0
>>15
出ない
無理数なら電卓と一緒
11 : 2021/10/25(月) 23:41:38.321 ID:D93xRKwF0
decimal型宣言の変数を作って、それに0.28や0.27を代入して引き算?
12 : 2021/10/25(月) 23:42:28.920 ID:FTjsGebb0
良さそう
14 : 2021/10/25(月) 23:44:53.326 ID:D93xRKwF0
y = decimal(0.28-0.27)

ってやったら定義されてないとかエラーでたよ

18 : 2021/10/25(月) 23:46:46.211 ID:Xy//+/HUd
2進数で10進少数を表すのには限界がある
3進数の0.1は10進数で1/3=0.333………だろ?
無限小数になってしまう
19 : 2021/10/25(月) 23:47:33.913 ID:D93xRKwF0
y = 28-27

y = y / 100

print(y)

ってやってみたけど、これじゃない感があるな

20 : 2021/10/25(月) 23:49:12.030 ID:nF+l3svb0
コンピューターで小数を扱う際の基本から勉強すべき
21 : 2021/10/25(月) 23:49:30.887 ID:/rZMGfBp0
もし小数点以下の桁数がバラバラなら
s=str(n-int(n))
# 0と小数点引くから-2
keta=len(s)-2
してさっきの×100してるところを10**ketaに置き換えろ
25 : 2021/10/25(月) 23:54:15.568 ID:D93xRKwF0
>>21
1行目は小数点以下を文字列日にして

3行目で「0.」のところ以外の小数点の桁数をとって

というところはわかったけど、10**kataは?

22 : 2021/10/25(月) 23:50:24.072 ID:vczXkbVxa
y = 0.28-0.27
pant(y)
24 : 2021/10/25(月) 23:54:10.679 ID:/rZMGfBp0
実際俺は
y=round(0.28-0.27, 2)
みたいな使い方することが多いわ
29 : 2021/10/26(火) 00:02:25.018 ID:aw81lzQ20
浮動小数点の丸め誤差だろ
マジで知らねえのか
30 : 2021/10/26(火) 00:03:03.532 ID:aw81lzQ20
基本情報の範囲だぞそんなの
31 : 2021/10/26(火) 00:03:22.588 ID:F6s7ABLb0
有効桁数違うもの演算したらどうなるの?
34 : 2021/10/26(火) 00:05:15.441 ID:F6s7ABLb0
演算結果に対して強制で有効桁数増やすことできる?
35 : 2021/10/26(火) 00:06:17.400 ID:BIzmU+bY0
質問ばっかで流石に疲れた
37 : 2021/10/26(火) 00:40:46.332 ID:Xv9fsHrv0
Roundの偶数方向に丸めるとかいう意味不明クソ仕様
39 : 2021/10/26(火) 00:48:45.190 ID:hAsGBmY50
コンピュータに実数も小数もない
ライブラリを使わない限りあるのは整数と浮動小数点数だけ

コメント

タイトルとURLをコピーしました