「0.1+0.2≠0.3」を説明できないエンジニアがいるらしい

0001 名無しさん 2023/12/05(火) 19:12:18.49 ID:OJi0jETo0●


「0.1+0.2≠0.3」を説明できないエンジニアがいるらしい
https://qiita.com/higashi_nc/items/9a5ea00415a008f06843


0002 名無しさん 2023/12/05(火) 19:13:04.02 ID:avouw5By0


0003 名無しさん 2023/12/05(火) 19:14:01.88 ID:Xw5BynVid

浮動小数点数かな🥺


0005 名無しさん 2023/12/05(火) 19:16:37.69 ID:0K1B6y2D0

こまけーことはいいんだよ!


0006 名無しさん 2023/12/05(火) 19:16:50.19 ID:guMxoRPP0

普段意識してなかったけど確かにな


0007 名無しさん 2023/12/05(火) 19:17:49.17 ID:VoURdM1EH

詳しくないけどそれくらいの桁数なら正確に保存されてるんじゃないのか
でかい数字からでかい数字を引くとトラブルになるのは知ってる


0014 名無しさん 2023/12/05(火) 19:28:01.82 ID:Rh9NGKJ40


>>7
IEEE表記に習ったfloatのような浮動小数点表示は2進数表記したときの循環小数が混じった段階で仮数部に切り捨てが発生するのでダメだったはず
0.3は指数部と仮数部に分けて表記する方法では表現できないはずだった気がする


0008 名無しさん 2023/12/05(火) 19:18:03.65 ID:4tx5KhANM

オラクルの人が書いた有名な文章あったよね


0009 名無しさん 2023/12/05(火) 19:20:23.99 ID:DPb9XGUXa

bigdecimalとか使えばええんでないの?🤔


0010 名無しさん 2023/12/05(火) 19:21:02.57 ID:XS4ut31i0

まず俺君がエンジニアではない事から説明しよう


0011 名無しさん 2023/12/05(火) 19:22:23.19 ID:guMxoRPP0

int型にキャストするば良いんだよ


0020 名無しさん 2023/12/05(火) 19:44:47.14 ID:m37Ku/cU0


>>11
じゃあ0.1+0.2をIntに換えたら…ええと、0!


0012 名無しさん 2023/12/05(火) 19:25:36.28 ID:AN/vllRw0

IEEE754


0013 名無しさん 2023/12/05(火) 19:27:44.15 ID:KVAkzEK/0

正確なのは 0.5 0.25 0.125 などpow(2, -n)のみなのであとは近似値となる


0028 名無しさん 2023/12/05(火) 20:19:12.22 ID:PqfjYdx+0


>>13
10をかけて整数にして足し算しろよ


0015 名無しさん 2023/12/05(火) 19:30:49.69 ID:zDhlLqKDH

金計算用のライブラリ使えばええ


0016 名無しさん 2023/12/05(火) 19:32:28.94 ID:Ro6x2N2E0



>>15
それは小数も扱えるの?


0017 名無しさん 2023/12/05(火) 19:38:53.84 ID:egpci3+pr

知ってるけど気にする必要がある状況になったことない
何がそうしてくれているのかわからない🥺


0018 名無しさん 2023/12/05(火) 19:42:40.07 ID:OVf57dyQ0

まあ整数で1+2したあとに冒頭に0.つければいいじゃん、そういうの


0021 名無しさん 2023/12/05(火) 19:45:39.87 ID:qjWaQueg0

COBOLつかえ


0022 名無しさん 2023/12/05(火) 19:48:56.07 ID:jlQJVSQRM

そんな程度の忖度のできないAIなんか誰も欲しがらないだろ


0023 名無しさん 2023/12/05(火) 19:59:57.79 ID:+7gbhK390

学者が考えとけよ
エンジニアは実務が遂行できればいいだけだろ


0024 名無しさん 2023/12/05(火) 20:01:44.21 ID:8fcTTo+oH

ただ言語・コンパイラが○ミなだけじゃん
いつまでこんなことやってんだよ
機械化簡単に終わる豆知識は技術力じゃねえから


0025 名無しさん 2023/12/05(火) 20:03:04.80 ID:tsC8i2Fjd

データ構造に依るとしか


0027 名無しさん 2023/12/05(火) 20:12:08.40 ID:fRVod3k80

そのへんの講義を担当していたのがゼロックスからやってきた小太りな男だったことは覚えているが肝心の内容は覚えていない


0029 名無しさん 2023/12/05(火) 20:21:59.16 ID:WwsA7OS20

これは正確な表現ではない
10進数の0.1や0.2を内部的には2進数で計算する場合だけ起きる問題で
16進数(4以上の2の冪乗なら何でもいい)の0.1の0.2なら2進数で計算しても正確に0.1+0.2=0.3になる


0030 名無しさん 2023/12/05(火) 20:25:00.65 ID:2fbyXVQi0

IT土方の世界では富豪プログラミングでデシマル型使えで終わる話


0032 名無しさん 2023/12/05(火) 20:31:05.02 ID:Tgkqfdl0d

今でもゼロックスって言うんやね


0034 名無しさん 2023/12/05(火) 20:51:08.85 ID:nfSrM6Ax0

扱う型によります。
おわり


0035 名無しさん 2023/12/05(火) 21:22:46.57 ID:hNsjTQSu0

固定小数点で計算すれば0.3になるんだけど


0036 名無しさん 2023/12/05(火) 21:59:44.52 ID:bHC+PTw20

これで先月苦労?したわ

誤差が災いしてインターロックがかからんと言われた

速度は不要だから全部decimalにして乗り切ったが、
そもそもなんでdoubleですらなくsingleで組んであるんやまったく


参照先 https://greta.5ch.net/test/read.cgi/poverty/1701771138/\n\n\n\n\n

新着記事一覧
TKをフォローする
プログラミング速報

コメント