俺「0.1+0.2=0.3だろ」 Javascript「違います」
    2016年09月27日 コメント(38) 家電・PC・モバイル 
    1風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:08:33.40 ID:CCwlASUF0.net
    Java「0.1+0.2=0.30000000000000004です」

    キチガイかこいつ






    2風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:08:57.10 ID:m3DnQU5ua.net
    こま?






    3風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:09:02.22 ID:isek8peH0.net
    0.1じゃないからしゃーない






    4風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:09:03.73 ID:DXYeo7Nl0.net
    はえープログラムの人ってちょっと変






    5風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:09:17.20 ID:H8Io4bJk0.net
    しゃーない






    6風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:09:36.38 ID:qwBkuMha0.net
    ほーん
    コンピュータの人間超えはなさそうやね






    10風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:10:44.69 ID:KocNo+8R0.net
    >>6
    プログラムやぞ?






    7風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:10:04.26 ID:Hcl4umo/a.net
    どうしてそうなるんや






    12風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:10:58.50 ID:isek8peH0.net
    >>7
    0.1とかも0.1に近い近似であって0.1ではないから






    16風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:12:29.77 ID:Jr7gFHjO0.net
    >>12
    丸が四角の塊みたいなもんか






    21風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:13:48.26 ID:Hcl4umo/a.net
    >>12
    はえ〜なるほど
    つまり現代のコンピューターの性質で、数値を2進数、つまり2の階乗の和で表現しようとするためです。

    例えば0.5は簡単ですね。2-1です。また0.25は2-2ですから、0.75は2-1+2-2という事になります。

    ちなみにJavaScriptで階乗を扱う場合はMath.pow()です。

    1
    console.log(Math.pow(2, -1)); // => 0.5
    2
    console.log(Math.pow(2, -2)); // => 0.25
    3
    console.log(Math.pow(2, -1) + Math.pow(2, -2)); // => 0.75
    それでは0.1はどう表せば良いでしょうか?

    1
    console.log(0.1.toString(2)); // => "0.0001100110011001100110011001100110011001100110011001101"
    おわかり頂けるでしょうか、これ、循環小数になります。10進数でいうところの1/3 = 0.33333333…みたいなやつです。

    ですので、0.1は2進数の世界に生きるコンピューターでは正確に扱う事ができません。なので近似値で扱うのですが、実際の数値とはちょっとだけずれているので、計算を行うと変な結果になってしまったりするわけなんやな






    26風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:15:29.19 ID:YMpwzU77d.net
    >>21







    24風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:14:18.05 ID:IDlvf2i2a.net
    >>21
    そのまま引用ニキ






    8風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:10:08.05 ID:PH0Hww9ka.net
    浮動小数点?






    9風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:10:32.95 ID:rGOhxiQc0.net
    スクリプトやで






    15風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:11:44.08 ID:1p+JYOSk0.net
    切り捨てしてやらなあかんてこと?






    17風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:12:40.60 ID:wZT9B7N90.net
    浮動小数点演算について勉強するといいよ






    18風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:13:04.65 ID:895hVGJl0.net
    >>17
    いや分かってるやろ






    25風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:14:24.08 ID:XGk7vlL60.net
    2進数最大の弱点






    19風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:13:19.28 ID:xIaCm6Vu0.net
    javaとjavascriptは別人






    23風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:13:59.47 ID:c5eXFsd00.net
    >>19
    ???「なんか流行ってるから名前につけたろ!」






    20風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:13:45.02 ID:abJYhnPz0.net
    2進数やとこうなるCOBOLは10進数やから銀行で使われる






    29風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:17:09.30 ID:Hcl4umo/a.net
    はえ〜COBOLって10進数なんや
    昔見た教科書にはCOBOLは数字に強いから銀行に使われるくらいの説明しか書いてなかったけどその説明も欲しかったなあ






    31風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:17:55.23 ID:abJYhnPz0.net
    どうしても計算したいなら整数にしてから少数にするといお






    30風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:17:28.90 ID:TyPQIDIr0.net
    全然知らんけどコンピュータに10進法使わせたら問題解決するんちゃうの?






    32風吹けば名無し@\(^o^)/ :2016/09/27(火) 03:18:57.55 ID:KocNo+8R0.net
    >>30
    そこはプログラマーの腕の見せどころ



     コメント一覧 (38)

      • 1. 金ぴか名無しさん
      • 2016年09月27日 11:49
      • よーし整数で計算して1桁目だけ抜き取って少数ってことにするぞ
      • 2. 金ぴか名無しさん
      • 2016年09月27日 11:55
      • >>21が新しくて笑えた
      • 3. 金ぴか名無しさん
      • 2016年09月27日 12:19
      • 関数とかで10進数で計算するプログラムつくったらいいのに
        プログミングやってるならこんなの簡単だろ?
      • 4. 金ぴか名無しさん
      • 2016年09月27日 12:20
      • まずはCから学んで、どうぞ
      • 5. 金ぴか名無しさん
      • 2016年09月27日 12:20
      • 21がいろいろ頭悪すぎなのに知ったかぶりでイライラする
      • 6. 金ぴか名無しさん
      • 2016年09月27日 12:24
      • 今の言語は10進数計算出来るの多いよ。

        だからコアな部分は10進で計算して、2進数しか扱えない言語は計算結果を表示するだけにするのが一般的。
      • 7. 金ぴか名無しさん
      • 2016年09月27日 12:25
      • もちろん大抵の言語には10進数で計算するクラスもある。
        が、当然二進数で計算するより遙かに遅い。
        要はプログラマーがそれを理解して適材適所で使えば問題ない。
      • 8. 金ぴか名無しさん
      • 2016年09月27日 12:29
      • 10進数なら問題ないと思ってる奴もいるが、同じことだからな?
        精度が足りなければ何進数でも同じことが起こる。
        無限の桁数を持つことができない以上、これはどうにもならないのでそれを理解して使わない方が悪い。
      • 9. 金ぴか名無しさん
      • 2016年09月27日 12:29
      • 物理実験とかそのまま使ったらやばいな。
      • 10. 金ぴか名無しさん
      • 2016年09月27日 12:34
      • ポンコツだけどあちこちのwebで使われまくりすぎて今更別のものに切り替えは作業が膨大になりすぎて出来ない
        それがjavascriptとフラッシュ
      • 11. 金ぴか名無しさん
      • 2016年09月27日 12:34
      • 無限少数なのは0.1じゃなくて、0.2の方なんじゃ…。
        釣りか?
      • 12. 金ぴか名無しさん
      • 2016年09月27日 12:47
      • 2進数やからゆうてる奴おるけど違うで、10進数でも近似値になるで。
      • 13. 金ぴか名無しさん
      • 2016年09月27日 13:09
      • 大松「2進数かどうかは別に関係ないぞ」
      • 14. 金ぴか名無しさん
      • 2016年09月27日 13:11
      • 根本的になんかおかしいスレ
      • 15. 金ぴか名無しさん
      • 2016年09月27日 13:17
      • っ四捨五入
      • 16. 金ぴか名無しさん
      • 2016年09月27日 13:26
      • 精度決めて0.01→10/1000→1000は覚えといて分子だけ計算→1000って値から小数点位置を出して自力でつける
        とかやってるのを見るたびにいつまでこんなアホなことすんねんと
      • 17. 金ぴか名無しさん
      • 2016年09月27日 13:40
      • 0.1なんも関係ないじゃん
      • 18. 金ぴか名無しさん
      • 2016年09月27日 13:48
      • はいはい誤差誤差
      • 19. 金ぴか名無しさん
      • 2016年09月27日 14:01
      • キリないじゃんアゼルバイジャン
      • 20. 金ぴか名無しさん
      • 2016年09月27日 14:03
      • 大学で習うはずだけどね
      • 21. 金ぴか名無しさん
      • 2016年09月27日 14:07
      • マジレスするとプログラミングする上で必要な処置を怠ってるからそうなる
        たとえばスマホの電卓プログラム立ち上げてこの計算やってもちゃんと計算できるだろ
        一部の泥はできないらしいけど、それは無視
      • 22. 金ぴか名無しさん
      • 2016年09月27日 14:16
      • 途中から口調かわるコピペニキに草
      • 23. 金ぴか名無しさん
      • 2016年09月27日 14:38
      • 数値型とかちゃんと細かくある他の言語では起きない問題だね
      • 24. 金ぴか名無しさん
      • 2016年09月27日 15:16
      • 結局はコンピュータが2進数でしか数えられないからどうにもならん
        コンピュータに10進数で考えさせたければ半導体が10段階の電圧を保持できる仕組みを考えなきゃならん
      • 25. 金ぴか名無しさん
      • 2016年09月27日 15:39
      • ※5
        笑いどころで一人イライラって人生辛すぎない?
      • 26. 金ぴか名無しさん
      • 2016年09月27日 15:47
      • 大正義BigDecimal
      • 27. 金ぴか名無しさん
      • 2016年09月27日 16:12
      • javascriptって変数の型指定できないのん?
      • 28. 金ぴか名無しさん
      • 2016年09月27日 17:07
      • 浮動小数点だと0.1は1×10^-1、0.2は2×10^-1やから余裕で計算できるぞ
      • 29. 金ぴか名無しさん
      • 2016年09月27日 17:20
      • ちゃんとした教育受けていれば、習うけどな。
      • 30. 金ぴか名無しさん
      • 2016年09月27日 19:02
      • 13/100=0.13
        14/100=0.1400000000000001
        15/100=0.15
        このバグほんと嫌い
      • 31. 金ぴか名無しさん
      • 2016年09月27日 20:24
      • JavaとJavaScriptの区別も
      • 32. 金ぴか名無しさん
      • 2016年09月28日 00:32
      • ※26
        JavaのBigDecimal計算面倒くさいんじゃボケ
        四則演算記号使わせろ
      • 33. 金ぴか名無しさん
      • 2016年09月28日 00:41
      • JavaScript はよくわからんが、使う時は自分も型変換とかも適当にやってるからなぁ
        数の文字列をどうやって数値に変換しよう…
        よし、0 で引き算しよう! とか
      • 34. 金ぴか名無しさん
      • 2016年09月28日 01:39
      • 言語仕様レベルでカバーするのもライブラリでカバーするのもよっぽど頭悪い実装とコンパイラでない限り変わらんわい。
      • 35. 金ぴか名無しさん
      • 2016年09月28日 02:43
      • BCD演算ライブラリもないんかい
      • 36. 金ぴか名無しさん
      • 2016年09月28日 08:14
      • 小数の計算は一旦整数に変換してから小数に戻すんだっけ?
      • 37. 金ぴか名無しさん
      • 2016年09月28日 23:15
      • 21で笑ってしまった
      • 38. 金ぴか名無しさん
      • 2016年10月02日 12:47
      • ワイ文系最後の4が出てきた理由がわからない
        0.1が厳密に0.1じゃないってのはニュアンスでわかるんやがじゃあなんで4が出てくるんや?
    コメントフォーム
    記事の評価
    • リセット
    • リセット

    ・コメント投稿者は投稿によって生じた結果につき、全ての責任を持つものとします。
    ・コメントは非公開、規制の対象となる場合があります。書き込みが行えない場合、IP由来の巻き込み規制の可能性があります。
      当サイトについて
      当サイトにはバナー広告とAmazonアソシエイトのリンクが含まれます。
      記事検索
      アーカイブ
      スポンサードリンク