C#, C♯, C#相談室 Part91 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2016/06/29(水) 04:39:09.19ID:sT3gw8vahttp://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1437808445/
C#, C♯, C#相談室 Part89
http://peace.2ch.net/test/read.cgi/tech/1443271409/
C#, C♯, C#相談室 Part90
http://echo.2ch.net/test/read.cgi/tech/1455160063/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
0153デフォルトの名無しさん
2016/08/04(木) 19:59:53.58ID:u/EohbaA金計算するならdecimal使えばいいだけのこと
そのためにあるんだから
0154デフォルトの名無しさん
2016/08/04(木) 20:03:08.07ID:/RaQ1xov桁の多い演算でdecimalでしか対処できない領域があるのは最初から当たり前。
当たり前だまったく何の必要性もない型をわざわざ用意するものか。
最初から言ってるように、ありえないのは>>85のような愚かな考えだ。
0155デフォルトの名無しさん
2016/08/04(木) 20:12:27.08ID:zUHRzBd80156デフォルトの名無しさん
2016/08/04(木) 20:16:12.36ID:jAu1xEMvつまんない事にこだわっているのを見るとコードを書かない人なのかなって思う
それとも学校や職場でそう教えられるのかね。趣味グラマには理解できない
0157デフォルトの名無しさん
2016/08/04(木) 20:20:11.12ID:u/EohbaAdoubleまででしか使えない場合はなんとか工夫するわけだけどそれじゃ間に合わない場合がある
そういう場合のために4倍精度(128ビット)とか8倍精度(256ビット)の2進浮動小数点が使えるように
なってる環境がある
反して金計算ではよくは知らんが必要な制度はせいぜい20何桁程度だろ。
それも小数点以下は5桁もあれば十分という。。。
すべては適材適所なんだよ。
0158デフォルトの名無しさん
2016/08/04(木) 20:37:57.07ID:09bMzMPy0159デフォルトの名無しさん
2016/08/04(木) 20:40:45.33ID:nf3Jdc8S0160デフォルトの名無しさん
2016/08/04(木) 20:43:36.47ID:/RaQ1xov>極大な数×極小な数とかね
浮動小数なんだからそれはないよw
doubleで対処できないのは大きな桁の有効数字(たとえば20桁とか)が要求されるケースだけ。
0161デフォルトの名無しさん
2016/08/04(木) 20:50:57.73ID:/RaQ1xov桁数の多い演算でもないのにdoubleでは対処できないケースがあるなら
後学のためにぜひideoneかどこかに実例で示して欲しいよ。
本当真面目に。
まあそんなのありえねえと思うけどさw
0162157
2016/08/04(木) 20:51:41.79ID:u/EohbaA間に合わなくなるのは
☓ 極大な数×極小な数
○ 極大な数+極小な数
のケースね。
そういうのを扱わななくちゃいけない場合はここにいる人の大多数にとって普通はないだろうけど場合によっては必要となる。
ブラックホールをシミュレートしなけりゃいけない時とか。。。
0163デフォルトの名無しさん
2016/08/04(木) 20:58:59.60ID:4Cs3sXx+0164デフォルトの名無しさん
2016/08/04(木) 20:59:49.63ID:cADM294i0165デフォルトの名無しさん
2016/08/04(木) 21:05:50.97ID:nf3Jdc8S_ '< ' l _ _ _ _ _ _ _ _ _ _ i ノ i ノ l `‐ _ _;ノ _ _ _ _ _ _ _ _ _ _ l ノ _ _ _ _ _ _ < `゛____ _ ‐´
_' /' _ _ ノ_ ' _/ _ ' _ _ l''''''''' _ ''''''''ii'''''''''''' ''''''''l ' /゛ _ _> _ _ __` _< _ _ _ _ _ _ _ _ _ノ ノ
i _ _ _ < _ _ _ < _i '''''''> T''''''゛''''''''''/ l''''''' ノ __ _ _ _ '_ _ _l ノ _ _ _< l ノ ‐‐‐‐‐‐‐‐
'/‐‐‐ _ノ 'il'''''' '''''lノ i _> ゛'‐ _ / ノ '/‐‐‐ _ノ lT''''' _ "'''''ll ノ i ノ _l ノノ '/‐‐ _‐‐‐
ノ‐ _ ノノ ノ_゛┘ ゛゛゛ノ l __` __ '/_ _'/ _` __ _ノ `‐ _ i l ノ゛゛゛ ゛゛゛ノ i ノ _゛゛゛゛ i ノ l l _ l
_l i i _ lノ i゛゛ノ ノノ ノ '/ _ _''i _ノ _ ''‐゛ __ _i ノ ノ ノノ l i _'i゛´ノ ノノ ノ _l ノ゛゛ ‐‐゛/ _i ノ l
_l i i _ iノ _ _ _ _ /` i ' < _ノ i _ノ ___ ゛ ノ _i l ノノ _l l _ _ _ _ /` i ノ i / _'l i ノ
_ < __ _ '''''' `゛ _ _ _ `'''''' < ノ l ゛ __ノ i _‐゛ _ _ '''''' `´ _ _ _ "'''''' < '/ ノ __ ゛ ノ ノ ノ
_> ‐ _ ''‐ _ _ _ _ _ _ _ _ _ _ _L_ノ ノ___ ノ _' _‐ _ ''‐ _ _ _ _ _ _ _ _ _ _/ '‐_/ '' _ ‐ ノ _ノ
0166デフォルトの名無しさん
2016/08/04(木) 21:06:28.51ID:nf3Jdc8S( ) _____
/ つ 話題終了|
〜( /  ̄|| ̄ ̄ ̄
∪∪ || ε3
゙゙~゙~
0167デフォルトの名無しさん
2016/08/04(木) 21:34:01.22ID:/AeganYAとりあえず
・二進法の都合上、小数点以下の実数は完全には
表すことが出来ない
・実数を表すのに浮動小数点数方式を
使うがあくまで擬似的な手段かつ
何処かしらで丸めるので
必ず誤差は発生する。
しかしプログラミング次第でその誤差は小さくできる。
・一切の誤差が許されないような環境、
つまり銀行などの金融関係では
decimalを使う
一般教養としてはこういう理解で
よござんすよね?
0168デフォルトの名無しさん
2016/08/04(木) 21:34:41.98ID:p5IuCpCb> ・たとえ計算上の誤差が影響した桁だろうが、ある決まった桁まで数字を出さなければならない
そんな要件見たことないけど
ましてや金融で w
0169デフォルトの名無しさん
2016/08/04(木) 21:41:56.25ID:jAu1xEMv0170デフォルトの名無しさん
2016/08/04(木) 21:47:00.53ID:nf3Jdc8Sどちらか片方しか使えない呪いでもあるんですかね…
両方使えるなら両方使い分ければいいだろ
速度と精度を天秤に掛ける事も出来ないんですかね
0171デフォルトの名無しさん
2016/08/04(木) 22:02:22.78ID:/RaQ1xovだからdecimal使ったって一切の誤差を無くせるわけじゃないってばw
無くせるのは基数が2の浮動小数であることに起因する誤差だけだと言ったでしょ
0172デフォルトの名無しさん
2016/08/04(木) 22:13:24.71ID:esG2QQER馬鹿らしいけど実際に俺はやってる
0173デフォルトの名無しさん
2016/08/04(木) 22:19:48.10ID:xurP0kD8丸目誤差なんてハナから相手にしてないとか
0174デフォルトの名無しさん
2016/08/04(木) 22:32:15.88ID:nf3Jdc8S一切の誤差が嫌なら分数・n方根etc型作れよ
javaと違って演算子の定義出来るから楽だろ
0175デフォルトの名無しさん
2016/08/04(木) 22:35:32.01ID:/RaQ1xov作れよ、だってさ
命令口調の奴って例外なくアホだな。
0176デフォルトの名無しさん
2016/08/04(木) 22:38:49.19ID:pbDOEnve説明してもどうせ無駄なんだろうな
0177デフォルトの名無しさん
2016/08/04(木) 22:40:49.97ID:nf3Jdc8S作れ→命令
(〜をしたいなら)作れよ→自分でやりたい事を実現するためには自分でするしかない
0178デフォルトの名無しさん
2016/08/04(木) 22:51:47.89ID:1Q45SAfiまさにdecimalなんだが
0179デフォルトの名無しさん
2016/08/04(木) 23:00:21.90ID:u/EohbaA簡単な話、たとえば1/3は誤差なく表現できない
有理数型をサポートしてる体系があったり、C#でも自分で実装してもいいわけだけど
それでもpiを誤差なく表現できるわけではないし(笑)
全ては求められる精度によるんだよ
0180デフォルトの名無しさん
2016/08/04(木) 23:05:13.41ID:nf3Jdc8S数学と同じ
0181デフォルトの名無しさん
2016/08/04(木) 23:10:14.23ID:nOpr2vNl具体例もないから参考にもならない
0182デフォルトの名無しさん
2016/08/04(木) 23:12:39.70ID:vfnh4WuI今となってはそれすら良く分からんが
0183デフォルトの名無しさん
2016/08/04(木) 23:15:17.05ID:nOpr2vNl何が目的かわからなければ誤差をどこまで許容するかわからない
そして元の質問者は既に納得して解決済み
0184デフォルトの名無しさん
2016/08/04(木) 23:18:19.93ID:uRE0pXxRそろそろ有理数型が基本型として使えるのが当たり前になってほしいところ
0185デフォルトの名無しさん
2016/08/04(木) 23:31:08.16ID:pbDOEnvedecimalの解像度は十分な精度を持っているということだね
0186デフォルトの名無しさん
2016/08/04(木) 23:36:46.06ID:/RaQ1xovちょっと単細胞過ぎるよ
カネ勘定の世界でも普通に除算は使いますw
例えば按分ね
0187デフォルトの名無しさん
2016/08/04(木) 23:55:18.85ID:pbDOEnve1/3円など存在しない金額は使いみちがない
0188デフォルトの名無しさん
2016/08/05(金) 00:08:43.40ID:cEIuN7pH日本語力の低さがやばい
0189デフォルトの名無しさん
2016/08/05(金) 00:17:08.00ID:QZhqwH4Eそんな単純じゃないよ。
普通の商売でも小売り以外は銭以下の単位で単価を設定するのは当たり前。
金融ならなおさらだ。
何が言いたいかって言うと、金勘定ならとにかくdecimalを使っておけば安全だ、
などということはありえないということ。
0190デフォルトの名無しさん
2016/08/05(金) 00:24:08.31ID:rof2NfJhスーパー玉出よりひどい
ここまでバカやってりゃどっちか飽きるぞ普通は
普通じゃないのがコラボレーションするとこうなる
0191デフォルトの名無しさん
2016/08/05(金) 03:39:17.62ID:WxI1qvCLdoubleで問題ないって人は、0.1を10回足して結果表示するコード書いてみてほしい
必要な桁数の精度は整数部2桁、小数部2桁で4桁もあればいいから
0192デフォルトの名無しさん
2016/08/05(金) 06:45:29.67ID:9GrcbVCuhttps://ideone.com/GFUHjj
( ゚∀゚)アハハハ
0193デフォルトの名無しさん
2016/08/05(金) 06:47:06.05ID:Kzn0CH9Z0194デフォルトの名無しさん
2016/08/05(金) 07:12:01.39ID:U1grrEll0195デフォルトの名無しさん
2016/08/05(金) 07:26:46.31ID:t4YicZGs端数はシステムでどうするか指定できる(考慮している)のが普通なんじゃね
そこまで話を膨らませたらイチャモンに思えるわ
0196デフォルトの名無しさん
2016/08/05(金) 09:28:38.14ID:HSLNFCI0会計は取引や決算の段階で全て円単位に矯正されて、総額と明細の差額は端数処理されて別勘定に振り替えられる
金融関係はdecimalで全く問題がないんだよ
0197デフォルトの名無しさん
2016/08/05(金) 11:34:33.31ID:ybsuHohgそもそもそういう目的で使うならdouble使わないですしおすし
使い分ければいいって話してるのにそれが分からないの?
お前はゲーム作るのにもクッソ遅いdecimal使う気?
単細胞死ね
0198デフォルトの名無しさん
2016/08/05(金) 11:38:33.06ID:ybsuHohghttp://echo.2ch.net/test/read.cgi/tech/1470364669/
まだやるなら移動
0199デフォルトの名無しさん
2016/08/05(金) 11:44:50.24ID:awNm9k8p自分が使わないスレ立てるのは荒しと一緒だぞ
0200デフォルトの名無しさん
2016/08/05(金) 11:59:26.11ID:ybsuHohg「どちらが優秀か」みたいな議論になってきてるやん
>>191みたいなのが問題ない時もあるのに
0201デフォルトの名無しさん
2016/08/05(金) 12:30:21.67ID:P4D3CPGd「そういう目的」でもdoubleで十分なんですよ。>>134
あえてdecimalを使わなきゃならない場面なんて普通はまずない。
それから、必用もないのにdecimalを使うような人(要するに誤差の問題をよく理解してない人)が
decimalを使っても意図したような誤差を含まない演算結果が得られないコードを
書く可能性が高い。
0202デフォルトの名無しさん
2016/08/05(金) 12:51:24.52ID:dWErFYHiまず自分が移動しろ
0203デフォルトの名無しさん
2016/08/05(金) 12:59:22.80ID:WxI1qvCLたしかに必要な精度が4桁で良いって前提なら問題ないように見えるけど
誤差は累積しないのか?
たとえば0.1を10回たして1.0を引く処理を1000万回ぐらい繰り返しても問題ないのか?
それともその場合はあえてdecimalを使わなきゃならない場面なのか?
0204デフォルトの名無しさん
2016/08/05(金) 13:35:00.84ID:P4D3CPGd基本的な考え方は>>136に書いてあるよ。
0205デフォルトの名無しさん
2016/08/05(金) 13:45:52.92ID:bSGkK4bY手作業で寸分の狂いなくつくった
一方アメリカは公差に基づいて
大量生産した
それなりに動けばいいんだよ
0206デフォルトの名無しさん
2016/08/05(金) 15:56:50.82ID:WxI1qvCL>>136は、累積誤差が必要な桁数を超えない限り問題ないって書いてあるだけだろ
聞きたいのは、ほとんどの状況でdoubleでOKだって言ってる人に
じゃあどういう状況がdouble不可なんだって事
誤差がどの程度累積するかなんて、正確に見積もれるのか?
doubleとdecimalでどんだけ速度差あるのかも良くわからん
基本、適材適所なのはその通りだけど
速度(とメモリ)に問題なければ基本decimalでOKって考え方の方が安全だと思うんだがな
0207デフォルトの名無しさん
2016/08/05(金) 16:12:11.71ID:ybsuHohg0208デフォルトの名無しさん
2016/08/05(金) 16:18:39.34ID:YTOm0VxE0209デフォルトの名無しさん
2016/08/05(金) 16:19:30.22ID:P4D3CPGd何を熱くなってるのか知らないけど、見積もれるに決まってるでしょ。
まさか誤差はランダムな値だとでも思ってるの?
馬鹿じゃないの。
0210デフォルトの名無しさん
2016/08/05(金) 16:27:24.03ID:WxI1qvCL1回の誤差は実行される式の値でわかるとしても
毎回同じ値の計算しかしないとでも?
何回実行されるかわからなくてもどれだけ累積するか見積もれると?
0211デフォルトの名無しさん
2016/08/05(金) 16:28:44.47ID:1+55aK491E3個ごとに分けて和を求めて得た1E3個の和の和を求める、なんてことをするね
単純に数式弄るだけじゃないので結構辛い
0212デフォルトの名無しさん
2016/08/05(金) 16:38:02.60ID:P4D3CPGd一回の加減算でどの程度の誤差が発生しうるかは分かる(恐らく演算結果の
最上位桁の1の1e-15より小さい)のだから、どの程度の回数の演算まで「安全」かは
扱う数値の範囲と有効桁数から事前に計算できるでしょ。
0213デフォルトの名無しさん
2016/08/05(金) 16:49:27.59ID:WxI1qvCL安全な回数を実行回数が超えるような場合でもdoubleでOKなの?その場合はdouble不可なの?
乗除でどの程度の誤差が発生するかも事前に計算できるの?
安全な回数がわかったとして、実行回数がそれを超えるかどうかはどう見積もるの?
基本doubleでOKだって言うのは、毎回その安全な回数と予測実行回数を算出してるの?
それとも体感上とか経験上とか、あるいは何の根拠も無く安全な回数を超えないと思ってるだけなの?
0214デフォルトの名無しさん
2016/08/05(金) 16:55:17.30ID:ybsuHohg0215デフォルトの名無しさん
2016/08/05(金) 17:23:54.01ID:P4D3CPGd少しは自分の頭で考えてよw
累積誤差が「安全」なうち必用な位置で丸めを行えば
数学的に正しい答えが得られなくまで誤差が累積することを防げるでしょ?
乗除算(特に除算)の誤差についてはdoubleに固有の問題じゃない。
0216デフォルトの名無しさん
2016/08/05(金) 17:25:12.91ID:Fe92dXPj真っ赤なのは頭の中茹であがってんだろう
設計段階で予測できそうにない誤差が出そうならdecimalでもdoubleでもなくint使っとけ
0217デフォルトの名無しさん
2016/08/05(金) 17:31:35.93ID:WxI1qvCLだからその途中で丸める必要性の有無やタイミングを正確に把握できないのに
基本doubleでOKだってのにどういう根拠があるの?って聞いてるんだが
0218デフォルトの名無しさん
2016/08/05(金) 18:01:19.80ID:P4D3CPGd正確に把握する必要なんてないの。
「安全」が確証できる間に丸めを行えば必用十分。
何を言ってるのかね。
0219デフォルトの名無しさん
2016/08/05(金) 18:03:05.39ID:P4D3CPGd0220デフォルトの名無しさん
2016/08/05(金) 18:07:37.18ID:ybsuHohg0221デフォルトの名無しさん
2016/08/05(金) 18:09:32.64ID:ybsuHohg0222デフォルトの名無しさん
2016/08/05(金) 18:32:40.21ID:WxI1qvCL確かに俺には理解できんわ
つまり、基本dobleでOKってのは、安全を確証できるならdoubleでOkってことでいいのかね
どうやって安全を確証してるのかは俺にはわからんけど
0223デフォルトの名無しさん
2016/08/05(金) 18:43:00.59ID:ybsuHohghttp://echo.2ch.net/test/read.cgi/tech/1470364669/
0224デフォルトの名無しさん
2016/08/05(金) 19:10:31.31ID:6fbUqWOr10進小数を2進数で表現するときの誤差の問題って学校だとあまり真面目に扱わないからね
それが重要になるような分野だと昔は10進固定小数点を持つCOBOLが使われてたからあまり問題にならなかったんだろう
そしてC系がCOBOLの領域を奪った現代になって、正しい教育を受けてない君みたいな問題児が出てきてるわけだね
0225デフォルトの名無しさん
2016/08/05(金) 19:46:46.35ID:Fe92dXPj0226デフォルトの名無しさん
2016/08/05(金) 19:54:24.29ID:OKNkohy60227デフォルトの名無しさん
2016/08/05(金) 19:57:54.35ID:k8Mh0VZx0228デフォルトの名無しさん
2016/08/05(金) 20:04:46.22ID:ybsuHohgイベント
0229デフォルトの名無しさん
2016/08/05(金) 20:06:59.74ID:x6bLb0/Nじゃないの(もうすぐお盆だね)
0230デフォルトの名無しさん
2016/08/05(金) 20:21:23.45ID:V0c90CvVみっともない負け惜しみだな。
0231デフォルトの名無しさん
2016/08/05(金) 21:09:38.75ID:aiX4oSLp0232デフォルトの名無しさん
2016/08/05(金) 22:22:08.96ID:UfFmSPxx0233デフォルトの名無しさん
2016/08/05(金) 22:31:14.21ID:V0c90CvVいつも思うけど、こういう寝言書く奴って自分は特別とでも思ってるのかね。
お前自身のやってることは何なんだ馬鹿。
0234デフォルトの名無しさん
2016/08/06(土) 00:13:37.40ID:WVtyz3N8ありがとうございます
やっぱそうなんですね
0235デフォルトの名無しさん
2016/08/06(土) 04:32:43.48ID:0IB3Z6XQ納得してるところ悪いけど違うと思うよw
型名(EventArgs)のイニシャルだと解釈するのが普通
0236デフォルトの名無しさん
2016/08/06(土) 07:39:21.33ID:WVtyz3N8ありがとうございます
0237デフォルトの名無しさん
2016/08/06(土) 08:38:43.76ID:AMCUmI5q0238デフォルトの名無しさん
2016/08/06(土) 09:59:43.52ID:aFqyb+q80239デフォルトの名無しさん
2016/08/06(土) 23:44:54.17ID:sc1eQQS30240デフォルトの名無しさん
2016/08/07(日) 00:26:15.92ID:9x/mUqeFFooException ex と BarException ex を同時に使う状況ってこと?
0241デフォルトの名無しさん
2016/08/07(日) 00:28:08.51ID:NgeF8SpO0242デフォルトの名無しさん
2016/08/07(日) 00:31:45.60ID:e9qgeSIcどうせスコープは短いだろうし適当な名前で問題なし
0243デフォルトの名無しさん
2016/08/07(日) 00:47:22.73ID:S/UbGMUUいや、それはキャッチのスコープが違うから問題なかろうけど、>>241のケース
0244デフォルトの名無しさん
2016/08/07(日) 00:50:27.58ID:9x/mUqeF0245デフォルトの名無しさん
2016/08/07(日) 09:23:00.24ID:mCHosifW色々見なおしたほうが良さそうな気もする
0246デフォルトの名無しさん
2016/08/07(日) 12:01:30.30ID:9x/mUqeF0247デフォルトの名無しさん
2016/08/08(月) 06:26:49.16ID:4wAqez6C普通にあるでしょそんなもん
そのへんをいい加減に作ると後片付けがうまくいかなくてフリーズする
よくあるゴミアプリが誕生する
0248デフォルトの名無しさん
2016/08/08(月) 19:52:54.53ID:0f2Bh+Sl人格だの人の能力を言い出しては もうプログラムの話ではない。
マ板行け
0249デフォルトの名無しさん
2016/08/08(月) 20:50:56.99ID:bsQ3M/kDやむを得ないこともあるけど、できるだけ避けるべきですね
エラー処理の中でエラーが起こるとデバッグに支障が出る場合もある
0250デフォルトの名無しさん
2016/08/08(月) 22:43:36.18ID:uowaRDGPVisualStudioにて複数ソースを開くと上部に複数タブが出てきます。
で、よくわからない内に選択したソースのタブが勝手に一番左に来るようになりました。
これが非常に面倒くさくて、選択したソースが一番左に来ないようにしたいのですが
どなたか解決方法ご存知ないでしょうか?
0251デフォルトの名無しさん
2016/08/09(火) 00:07:43.18ID:+GDJlmm9タブがピン留めされてない?
0252デフォルトの名無しさん
2016/08/09(火) 00:29:21.39ID:PJVjRNSn■ このスレッドは過去ログ倉庫に格納されています