ツイート | 2016年09月27日 | │コメント(38) | │家電・PC・モバイル |
|
- 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
そこはプログラマーの腕の見せどころ
「プログラミング」のキホン プログラムの動作の基本と高速データ処理のしくみ (イチバンやさしい理工系)
posted with amazlet at 16.09.27
SBクリエイティブ (2014-03-12)
売り上げランキング: 114,631
売り上げランキング: 114,631

コメント一覧 (38)
プログミングやってるならこんなの簡単だろ?
だからコアな部分は10進で計算して、2進数しか扱えない言語は計算結果を表示するだけにするのが一般的。
が、当然二進数で計算するより遙かに遅い。
要はプログラマーがそれを理解して適材適所で使えば問題ない。
精度が足りなければ何進数でも同じことが起こる。
無限の桁数を持つことができない以上、これはどうにもならないのでそれを理解して使わない方が悪い。
それがjavascriptとフラッシュ
釣りか?
とかやってるのを見るたびにいつまでこんなアホなことすんねんと
たとえばスマホの電卓プログラム立ち上げてこの計算やってもちゃんと計算できるだろ
一部の泥はできないらしいけど、それは無視
コンピュータに10進数で考えさせたければ半導体が10段階の電圧を保持できる仕組みを考えなきゃならん
笑いどころで一人イライラって人生辛すぎない?
14/100=0.1400000000000001
15/100=0.15
このバグほんと嫌い
JavaのBigDecimal計算面倒くさいんじゃボケ
四則演算記号使わせろ
数の文字列をどうやって数値に変換しよう…
よし、0 で引き算しよう! とか
0.1が厳密に0.1じゃないってのはニュアンスでわかるんやがじゃあなんで4が出てくるんや?
・コメントは非公開、規制の対象となる場合があります。書き込みが行えない場合、IP由来の巻き込み規制の可能性があります。