[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 05/12 07:11 / Filesize : 279 KB / Number-of Response : 1029
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part91



1 名前:デフォルトの名無しさん [2016/06/29(水) 04:39:09.19 ID:sT3gw8va.net]
■Visual Studio 2013 Community & Express(無償の統合開発環境)等はこちら
www.visualstudio.com/downloads/

■コードを貼る場合はこちら
ideone.com/

■前スレ
C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1437808445/
C#, C♯, C#相談室 Part89
peace.2ch.net/test/read.cgi/tech/1443271409/
C#, C♯, C#相談室 Part90
echo.2ch.net/test/read.cgi/tech/1455160063/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

75 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 21:12:38.19 ID:l2W1ufxp.net]
フォーマットって四捨五入じゃなかった?
てか一度文字列化してまた数値に戻すとか無駄ありすぎでしょ

76 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 21:31:28.58 ID:1biageaY.net]
>>72
四捨五入されるのか?
https://msdn.microsoft.com/ja-jp/library/0c899ak8%28v=vs.110%29.aspx
表示に使うか計算を続けるかで変わるが
個人的に表示なら.ToString("F2")とかを良く使っているな
dobon.net/vb/dotnet/string/inttostring.html
数値として使い続けるのなら>>69のやり方一択だが

77 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 21:40:43.95 ID:fbhAMiPd.net]
こういうのってMath.Truncateで標準実装して欲しいよな

78 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 21:49:13.47 ID:l2W1ufxp.net]
>>73
両ページの例見りゃ分かるけど四捨五入してるじゃん
それと今回の質問は切り捨てだからそれじゃ要件満たさない

79 名前:デフォルトの名無しさん [2016/08/02(火) 22:08:08.02 ID:kMeLb5Qs.net]
丸めなら、double Round( double value, int digits, MidpointRounding mode )でmodeをAwayFromZeroにすれば行けるな。

80 名前:デフォルトの名無しさん [2016/08/02(火) 22:09:05.46 ID:kMeLb5Qs.net]
丸め→四捨五入

81 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 22:21:50.97 ID:tn1deP8x.net]
>>75
今回の例だと、切り捨てたいのか銀行丸めで良いのかわからんのだが

82 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 22:38:02.66 ID:HL5T2dK4.net]
>>73
2ケタなら問題ないだろうけど、もっと下のケタで切り捨てる時に
そのやり方で誤差が出ないか(意図と違って切り上げになったりしないか)ちょっと疑問かも。

83 名前:デフォルトの名無しさん mailto:sage [2016/08/02(火) 22:46:11.79 ID:HL5T2dK4.net]
かといってどうすりゃいいのかよく分からんな。
static double Truncate(double x, int decimals)
{
  if (x == 0) return 0;
  var round = Math.Round(x, decimals, MidpointRounding.AwayFromZero);



84 名前:
  if (round / x <= 1) return round;
  var digit = Math.Sign(x) * Math.Pow(10, 1 - decimals);
  return Math.Round(round - digit, decimals);
}

これじゃ何か無駄っぽいし
[]
[ここ壊れてます]

85 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 08:09:04.52 ID:izDrDrnm.net]
>>74
切り捨てや切り上げは丸めと違って誤差が影響した場合のインパクトが大きいから実装したくないんだろ
「0.0999999999999999」の切り捨ての結果は大抵のプログラマは0.1を期待してるだろうけど、普通に実装したら0.0になるわな

86 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 08:20:28.03 ID:rSz0AB29.net]
実装されてないのは桁数を指定した切り下げ、切り上げだよ
桁数指定できないのはあるだろ

87 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 08:38:06.19 ID:nNYUFf9P.net]
> 「0.0999999999999999」の切り捨ての結果は大抵のプログラマは0.1を期待してるだろうけど、

いや、それは無い

88 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 11:13:35.07 ID:8916Nt3B.net]
切り捨て?

89 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 11:16:43.05 ID:ZXeq6keH.net]
丸めが気になる数字にdouble使うのはどうかしているだろ
decimalは何のためにあるのかね

90 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 11:22:03.76 ID:vCrtu5C1.net]
decimalって関係あるのか?
動的型付けのキーワードなのに

91 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 11:35:20.08 ID:wuBisWbe.net]
>>85
その発想がおかしいw
問題意識が逆立ちしてるなw

92 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 12:41:58.26 ID:jT3/wbav.net]
>>86
もしかして:dynamic

decimalはこっち
https://msdn.microsoft.com/ja-jp/library/364x0z75.aspx
>>decimal キーワードは、128 ビットのデータ型を示します。
>>decimal 型は、浮動小数点型よりも有効桁数が多く、範囲が狭いので、財務や金融の計算に適しています。

93 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 12:48:18.71 ID:vCrtu5C1.net]
>>88
あっそっちか
dから始まるクソ長いキーワードとして覚えていたから勘違いした



94 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 17:46:25.42 ID:qqYjumI6.net]
>>85
doubleならそれほどでもないと思うが
singleならともかく
そもそも特定の桁から下切って使い続けるってめったにないだろうし
誤差許容範囲を作るのにやったことはあるな

95 名前:デフォルトの名無しさん [2016/08/03(水) 17:52:51.31 ID:vCrtu5C1.net]
NLuaからC#のジェネリック型を使うにはどうすればいいでしょうか?
List<T>を使いたいです

96 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 18:26:06.69 ID:oiDTcOGH.net]
NLuaの作者に聞いたら?

97 名前:デフォルトの名無しさん [2016/08/03(水) 18:29:01.37 ID:vCrtu5C1.net]
>>92
国産じゃないので無理です

98 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 18:32:02.06 ID:oiDTcOGH.net]
C#も国産じゃないからこのスレで質問するな

99 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 18:36:54.29 ID:vCrtu5C1.net]
>>94
国産じゃないから作者に質問できないって言ってるんですが

100 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 18:41:13.99 ID:rSz0AB29.net]
wwww
そんなくだらないことで作者の手を煩わせるなよ
その手はここで聞くよりstackoverflowの方が早くて確実だと思うぞ

101 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 19:20:36.10 ID:OMwBzZOo.net]
まあ安っぽい煽りにのって見当はずれなレスつけるくらいなら2chやらない方がいいな

102 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 21:01:35.46 ID:MkOQGcCX.net]
decimal と dynamic の区別もつかない子なんだから
みんな優しくスルーしてあげようよ

103 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 21:15:10.43 ID:LSSVX5ne.net]
>>98
普通の長さの単語なのにねぇ。



104 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 21:30:26.93 ID:o77xN4AH.net]
decimal
default
delegate
do
double
descending
dynamic

105 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 21:34:28.09 ID:vCrtu5C1.net]
default
delegate
do
double
はよく使うから覚えてるけどdecimal、descending、dynamicは使ったことないから許して

106 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 21:35:21.21 ID:vCrtu5C1.net]
descendingってLINQのキーワードか

107 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 21:43:15.83 ID:R02UCwO4.net]
85だが、dynamicくんは良いとして、87の人がキレた理由がさっぱり分からん
本人でも他の人でも良いけど解説してもらえないでしょうか?

108 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 21:50:10.97 ID:wuBisWbe.net]
>>103
キレてるように見えないとおもうけどw
特に理由がないならdecimalのような高コストな型の使用は避けるのは当たり前だw

浮動小数の演算は誤差を生む可能性があるが、それは必用な精度を確保する手段がない
ことを意味してない。

109 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 21:50:37.36 ID:DDCmgbTU.net]
計算するときに丸め気にしないことなんてないから、doubleの必要性がなくなる

110 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 22:49:52.73 ID:R02UCwO4.net]
>>104
丸めが問題になる金融系だとdecimal使うのは常識だろ
decimalのコストが気になるほど速度にシビアでdobleの丸め誤差が気になる場面はめったにないな
金融の大規模な計算はDBにやらせるのが筋だし

111 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 23:06:36.38 ID:wuBisWbe.net]
だから誰も金融系の話なんかしてないでしょ。
何をいってんの。

「丸めが気になる数字にdouble使うのはどうかしている」なんて寝言を言ってる奴がいるから
そんなことはねえよ、そういう話だよ。

112 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 23:13:17.50 ID:R02UCwO4.net]
>>107
金融系除いて、decimal使えないほど速度にシビアで丸め誤差が気になる場面って一体何時起こりえるの?

113 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 23:20:57.08 ID:+uSGRXQT.net]
機械学習とかイメージングは演算誤差が大敵
かつ速度も要求される



114 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 23:25:25.51 ID:+uSGRXQT.net]
かといって高精度整数を扱うのにはコスト的に無理があった彼らは
べらぼうにサンプルを増やして誤差を均一化するか, 補完法を改良することでお茶を濁した

115 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 23:37:11.41 ID:R02UCwO4.net]
>>110
後、もう一つ大事な条件書き忘れていた
「C#で」

116 名前:デフォルトの名無しさん mailto:sage [2016/08/03(水) 23:42:43.18 ID:fJKhNvbj.net]
>>109
「誤差」という言葉でひとくくりにしすぎ。
そういう一般的な数値処理は誤差が許容範囲以下であればいいんであって、丸め誤差の問題とは
やや性質が違う。そもそも処理の途中でいちいち丸めないし。

117 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:05:21.11 ID:Vi80rqnk.net]
>>108
何を言ってるのか意味がわからないけど、繰り返しになるが
必用もないのに高コストなdecimalを使う理由はないし、そんなプログラマもいません。
理屈を分かってないダメグラマは別にしてね。

118 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:09:13.58 ID:5NqeNpQm.net]
予想通り言いがかりでしたw

119 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:09:46.86 ID:cADM294i.net]
たとえ遅くても演算誤差でバグが発生しない方を俺は使うね

120 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:15:15.90 ID:oWVthcOw.net]
decimalとdoubleでそんなにコスト違うのかね

誤差とコストでどっちとるって話だが
まあそのコスト差すら気にするコストにシビアな環境なら気を付ければいいさ
そこまでシビアな環境でC#を使うこと自体の意義を問い詰めたいけどな
通常は多少のコストで誤差がなくなるなら、そっち選ぶと思うけど

121 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:17:30.28 ID:5NqeNpQm.net]
>>113
>必用もないのに高コストなdecimalを使う理由はないし
だから具体的にdoubleで問題が出る(=丸め誤差が問題になる)C#のジョブを書いてくれよ
想定なしなら言いがかりだよね

122 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:20:22.77 ID:Vi80rqnk.net]
当たり前だけどdecimal使ったって誤差を無くせるわけじゃないよw
doubleみたいに基数2の浮動小数であることに起因する誤差を無くせるだけ。
無理数が有限の情報量で表現できるわけないでしょw

123 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:23:01.22 ID:Vi80rqnk.net]
>>117
だから何を言ってるの?意味が分からん。

俺はdoubleにはその手の演算誤差があっても必用な精度を確保する手段はあるから
無暗にdecimalなんか使わずにdoubleを使うのが普通だと言ってるんだけど。

何が「だから」だよ。



124 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:24:34.98 ID:5NqeNpQm.net]
最初のレスから「丸め」と書いてあるのに今更何言ってるんだかw

125 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:27:02.95 ID:Vi80rqnk.net]
>>120

126 名前:
その「丸め」って言葉を恐らく君は誤用してるんだけどねw
[]
[ここ壊れてます]

127 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:27:22.12 ID:oWVthcOw.net]
0.1が正確に表現できない環境が普通なやつとは話が合わんな

128 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:27:46.10 ID:5NqeNpQm.net]
>>119
最初から「丸めが気になる数字にdouble使うのはどうかしているだろ」と言っているのに日本語判らないのかな?
気にならなければdouble使えばいいだけだろ

129 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:31:49.11 ID:Vi80rqnk.net]
>>123
じゃあ聞くけど、そもそも「丸めが気になる数字」ってどういう意味?
言葉通り受け取ると全然理解不能なんだけど

130 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:33:41.63 ID:5NqeNpQm.net]
>>121
浮動小数点は2進数表現だが、実際に使われている10進数を完全に表記できないから
誤差が生じるってこと以外の丸め誤差を書いてくれ

俺は何と勘違いしているんだ?

131 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:34:26.87 ID:oWVthcOw.net]
Vi80rqnkの主張は普通はdoubleで良いだろって主張なのは理解できるが
5NqeNpQmの主張は俺にもいまいちよくわからん

132 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:34:43.49 ID:bt/hw+Ix.net]
相談内容置いてきぼりの議論は、
このスレ使ってあげて。

ふらっと C#,C♯,C#(議論用)
echo.2ch.net/test/read.cgi/tech/1469538912/

133 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:37:31.68 ID:Vi80rqnk.net]
>>125
何言ってるんだか意味がわかりません。
誰と戦ってるの?w



134 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:41:16.26 ID:5NqeNpQm.net]
>>128
細かいことが気になるならdecimalを使って、気にならないならdouble使えばいいってことだよ
decimalを目の敵にしているのか理由が分からん

そもそもアンタはdoubleで問題になる具体例を出せないじゃないか

135 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:46:58.32 ID:Vi80rqnk.net]
何でdoubleで問題ないからdouble使えって言ってる人間に
doubleで問題になる具体例を求めるんだよw

意味わかんないよw

136 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 00:51:13.09 ID:5NqeNpQm.net]
>>130
丸めが気になるならdouble駄目じゃんw
そういう時はdecimal使えよ

137 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 01:04:42.73 ID:Vi80rqnk.net]
だから「丸めが気になる」ってどういう意味?w

138 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 01:07:56.03 ID:5NqeNpQm.net]
>>132
>その発想がおかしいw
ってレスしておきながらいまさら・・・

139 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 01:09:13.13 ID:Vi80rqnk.net]
あのねえ、こんなの学部のプログラミングの最初の講義で習うような話だと思うけど、
https://ideone.com/8wrQC7

何も考えずにdoubleを使うと上のgrossの結果にあるように演算結果に誤差が
出ちゃうことがあるけど、ちゃんと誤差の性質を理解していれば、何度も言ってるように
必用な精度を得ることが出来るんですよ。

140 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 01:57:41.32 ID:kCsBXGZ7.net]
>>134
これって最後に Math.Round してるのは答えが 100000 になるって知ってるから?
それとも必要な精度の1つ下の位を Math.Round しておけばどんな計算でもOKなの?

141 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 02:15:13.20 ID:Vi80rqnk.net]
>>135
有効数字が小数的1桁の数字(delta)を何回加減算しても
結果の有効数字は小数的1桁

だから累積誤差が±0.05を超えない限り、小数点1桁で丸めた値は必ず
数学的に正しい値になる。

もちろん演算結果の桁数(指数表記した時の仮数部の桁数ね)があまりに大きい
(doubleの場合確か16桁ぐらいだと思ったけど)と正しい結果にはならないけどね。

142 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 07:07:58.69 ID:1Q45SAfi.net]
>>136
問題はRoundの結果に対する誤差の影響についての方だろ?
結果が100000.05付近になるとき、100000.1になるか100000.0になるかは
累積の丸め誤差に依存するよね
MSDNでも実際にそれが問題になっている例が示されてる
https://msdn.microsoft.com/ja-jp/library/f5898377(v=vs.110).aspx
結局>>81が示してるようなコーナーケースがあるんだよ

143 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 08:22:56.73 ID:sK75NDgM.net]
現実には結果に±が付くような問題よりも0.051を0.05として四捨五入するような問題の方がずっと多いにもかかわらず、
情報系の教育って後者の分野を軽視



144 名前:する傾向があるよね
学者さん達はCOBOLの悪夢で辟易してるんだろうけど、
>>134みたいなのを社会に送り続けている責任について真面目に考えるべき
[]
[ここ壊れてます]

145 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 09:30:43.38 ID:hQiyrQkt.net]
教科書ネタは伸びるな

146 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 10:09:13.73 ID:/RaQ1xov.net]
悪いけど>>81>>137-138も何を言ってるのかさっぱり分からんな
何か盛大に勘違いしてることだけはよく分かるけどw

147 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 10:13:24.57 ID:/RaQ1xov.net]
まあ人づだけいっておけば、丸め処理には誤差があるぞって得意気に言ってるのかもしれないが、
それは丸め処理の誤差じゃなくて上にも何度も出てくる浮動小数の仕様に起因する誤差であって、
問題でも何でもない。

問題があるとすれば、そんな問題でもなんでもないもののせいで間違った答えを吐き出すような
コードを書いてしまう無能な、 sK75NDgMのような無能なプログラマの方だ。

148 名前:デフォルトの名無しさん [2016/08/04(木) 16:48:07.32 ID:wj+CJSh1.net]
科学技術計算的には多少の誤差あっても
いいって習ってたから
なんか駄目なのか?って思ったけど
要は使い方とプログラミングの問題よな?

149 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 17:00:50.42 ID:dpx64fng.net]
>>142
というか全てに当てはまる基準なんかないんだから
用途もわからないのにこっちの方が正しいとか言う議論なんか無駄の極み

150 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 18:07:34.85 ID:9MgkqNZw.net]
バタフライ効果を起こさない程度にしとけよ

151 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 18:17:15.13 ID:/RaQ1xov.net]
>>143
絵に描いたような2chネラっぽいアホな意見でいいねそれw

152 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 18:21:20.99 ID:/RaQ1xov.net]
>>142
多くの用途で誤差があっても許容できるというより、誤差は制御できる
(誤差の影響を受けずに必用な精度を得る方法はちゃんとある)というのが正しい理解。

153 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 19:09:46.69 ID:7IFnluUJ.net]
>>146
制御したいのは誤差じゃなくて丸めの挙動な
知識を披露したいのはわかるが、話を逸らさないように
doubleの計算で結果が中間値に極めて近い値になるときの丸めの挙動が予測困難であることについて君は何も答えられてないよね



154 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 19:30:45.91 ID:7IFnluUJ.net]
数値計算の誤差の考え方には二種類あるんだよ
・誤差があるのは当然だから誤差は明示的に示すか不明確な桁は表示しない
・たとえ計算上の誤差が影響した桁だろうが、ある決まった桁まで数字を出さなければならない
後者は金融系が代表的だね
そして後者の場合、誤差範囲の中でなぜその数字になったか説明するための理由が必要だ
それには、丸めの挙動を制御することが非常に重要なんだよ

155 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 19:45:50.27 ID:/RaQ1xov.net]
>>147
相変わらず何を言ってるのかさっぱり分からない。

丸めの挙動に予測不能性があるとして、そんなものに結果が影響されるような
コードを書くのはただの馬鹿だ。

156 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 19:50:17.42 ID:/RaQ1xov.net]
そもそもdoubleの実装の都合上、別に丸めに限らずあらゆる演算に誤差
(お馬鹿さんの表現で言えば予測不可能性)が酒れらず、
にも拘わらずそれは制御可能であってまったく問題にならないと
実例を上げて言ってるのに馬鹿じゃなかろうか。

157 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 19:53:02.49 ID:/RaQ1xov.net]
お馬鹿さんに行っても分からないだろうけど、丸めの結果がどっちに転ぶか
予想できないような場面で丸めを実行するようなコードを書いてるとしたら
それはただのプログラマの頭の悪さに起因するバグだ。

158 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 19:58:40.44 ID:7IFnluUJ.net]
>>151
だからそれをdecimalで解決できるケースもあると言ってるんだけど、理解できないかな?
あんたの理屈だとdouble値が10進数の中間値をとるケースなんて想定すること自体が間違っているということになるよね?
俺もそれには同意するよ

159 名前:デフォルトの名無しさん [2016/08/04(木) 19:59:53.58 ID:u/EohbaA.net]
予測不可能性なんてないからw
金計算するならdecimal使えばいいだけのこと
そのためにあるんだから

160 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 20:03:08.07 ID:/RaQ1xov.net]
>>152
桁の多い演算でdecimalでしか対処できない領域があるのは最初から当たり前。
当たり前だまったく何の必要性もない型をわざわざ用意するものか。

最初から言ってるように、ありえないのは>>85のような愚かな考えだ。

161 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 20:12:27.08 ID:zUHRzBd8.net]
NGでスッキリ

162 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 20:16:12.36 ID:jAu1xEMv.net]
doubleだろうがdecimalだろうが性質理解して使うのならどっちでもいいだろうに
つまんない事にこだわっているのを見るとコードを書かない人なのかなって思う
それとも学校や職場でそう教えられるのかね。趣味グラマには理解できない

163 名前:デフォルトの名無しさん [2016/08/04(木) 20:20:11.12 ID:u/EohbaA.net]
物理の計算においてdoubleじゃ間に合わないケースがある極大な数×極小な数とかね
doubleまででしか使えない場合はなんとか工夫するわけだけどそれじゃ間に合わない場合がある
そういう場合のために4倍精度(128ビット)とか8倍精度(256ビット)の2進浮動小数点が使えるように
なってる環境がある

反して金計算ではよくは知らんが必要な制度はせいぜい20何桁程度だろ。
それも小数点以下は5桁もあれば十分という。。。
すべては適材適所なんだよ。



164 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 20:37:57.07 ID:09bMzMPy.net]
Π使うような場合は有理数計算するけどね

165 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 20:40:45.33 ID:nf3Jdc8S.net]
ゲーム作ってるけどdoubleの誤差で困った事なんか一回もないぞ

166 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 20:43:36.47 ID:/RaQ1xov.net]
>>157
>極大な数×極小な数とかね
浮動小数なんだからそれはないよw
doubleで対処できないのは大きな桁の有効数字(たとえば20桁とか)が要求されるケースだけ。

167 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 20:50:57.73 ID:/RaQ1xov.net]
しかしさあ、丸めの挙動の問題とかで
桁数の多い演算でもないのにdoubleでは対処できないケースがあるなら
後学のためにぜひideoneかどこかに実例で示して欲しいよ。
本当真面目に。

まあそんなのありえねえと思うけどさw

168 名前:157 [2016/08/04(木) 20:51:41.79 ID:u/EohbaA.net]
あれ、間違えた
間に合わなくなるのは
☓ 極大な数×極小な数
○ 極大な数+極小な数
のケースね。
そういうのを扱わななくちゃいけない場合はここにいる人の大多数にとって普通はないだろうけど場合によっては必要となる。
ブラックホールをシミュレートしなけりゃいけない時とか。。。

169 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 20:58:59.60 ID:4Cs3sXx+.net]
まだやってんのかよw

170 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 20:59:49.63 ID:cADM294i.net]
ここって浮動小数スレなの?

171 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 21:05:50.97 ID:nf3Jdc8S.net]
_ _ ''< _ _ _ _ _'i゛゛゛ _ _ _ _      i'''''l      T'''>    __/' _ _ _ _ _ _'l゛゛゛ _ _ _ _    _ _ _ _ _ _ _ __ _ ____ / <
_ '<  ' 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   ゛

172 名前:@ __ノ i     _‐゛ _ _ '''''' `´ _ _ _ "'''''' <  '/ ノ  __ ゛ ノ   ノ ノ
_> ‐ _ ''‐ _ _ _ _ _ _ _ _ _ _     _L_ノ    ノ___ ノ    _' _‐ _ ''‐ _ _ _ _ _ _ _ _ _ _/  '‐_/   '' _ ‐    ノ _ノ
[]
[ここ壊れてます]

173 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 21:06:28.51 ID:nf3Jdc8S.net]
  ∧∧ ミ  ドスッ
  (  ) _____
  /  つ 話題終了|
〜(  /   ̄|| ̄ ̄ ̄
 ∪∪   || ε3
      ゙゙~゙~



174 名前:デフォルトの名無しさん [2016/08/04(木) 21:34:01.22 ID:/AeganYA.net]
相変わらずよくわかってないトーシロですけども
とりあえず

・二進法の都合上、小数点以下の実数は完全には
表すことが出来ない
・実数を表すのに浮動小数点数方式を
使うがあくまで擬似的な手段かつ
何処かしらで丸めるので
必ず誤差は発生する。
しかしプログラミング次第でその誤差は小さくできる。

・一切の誤差が許されないような環境、
つまり銀行などの金融関係では
decimalを使う

一般教養としてはこういう理解で
よござんすよね?

175 名前:デフォルトの名無しさん mailto:sage [2016/08/04(木) 21:34:41.98 ID:p5IuCpCb.net]
>>148
> ・たとえ計算上の誤差が影響した桁だろうが、ある決まった桁まで数字を出さなければならない
そんな要件見たことないけど
ましてや金融で w






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<279KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef