C#, C♯, C#相談室 Part91 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
16/06/29 04:39:09.19 sT3gw8va.net
■Visual Studio 2013 Community & Express(無償の統合開発環境)等はこちら
URLリンク(www.visualstudio.com)
■コードを貼る場合はこちら
URLリンク(ideone.com)
■前スレ
C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
スレリンク(tech板)
C#, C♯, C#相談室 Part89
スレリンク(tech板)
C#, C♯, C#相談室 Part90
スレリンク(tech板)
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

2:デフォルトの名無しさん
16/06/29 18:23:32.48 UgmC8hz1.net
>>1


3:デフォルトの名無しさん
16/06/30 22:05:57.88 JGx4fkAA.net
>>1

こっちが先だから一度上げておこう

4:デフォルトの名無しさん
16/07/02 06:31:52.76 OubZeepB.net
Task使うとたまに
var a = new A();
list.Add(a); <- NullReferenceException
とか出るんやが、これ何なん?

5:デフォルトの名無しさん
16/07/02 06:53:26.32 VHbSiagN.net
俺は見たことない
お前の環境が悪いもしくはお前のコードが悪い
おま環もしくはおまコー

6:デフォルトの名無しさん
16/07/02 09:13:06.45 K03FbX+c.net
>>4
listをどこかでnewし直してるんじゃない?

7:デフォルトの名無しさん
16/07/02 10:04:13.18 h0xKmlhE.net
aかlistかどちらかがnullで間違いないが作った本人しか確認しようがない
デバッガで見るか検証用のコード挟めばすぐ原因わかるだろう
仮に .Netのバグでも対処するしかないんだからw

8:デフォルトの名無しさん
16/07/02 10:31:02.23 OubZeepB.net
スレッドの問題だった。
listは静的なメンバで宣言時にNewしとった。
止まった時変数確認したら中身入っとるし、なんやこれと思ってたが
ググったら別スレからアクセスされるとたまに出るってさ。

9:デフォルトの名無しさん
16/07/02 10:33:03.36 076trUWv.net
var a = new A();
おま環以前にこれで静的メンバを表したつもりとか池沼すぎるわ

10:デフォルトの名無しさん
16/07/02 12:13:19.40 h0xKmlhE.net
>>9
お前は何を言っているんだw

11:デフォルトの名無しさん
16/07/02 13:59:47.20 ntDBmTYJ.net


12:デフォルトの名無しさん
16/07/02 15:22:19.85 vZ4Zd/Cc.net
ファーw

13:デフォルトの名無しさん
16/07/06 22:53:40.68 IPuEGOod.net
質問失礼します。
foreach(string key in tbl.Keys)
{
なにがしかの処理
if(とある条件) {
tbl.Remove(key);
}
}
(tblはHashtableです)
上記のコードはエラーになります。
ループ命令(for , foreach , while)で回しつつテーブルの要素をRemoveしていきたいのですが、どうしたら良いでしょうか?
tbl.CopyToで一旦Arrayに確保してループ命令で回す事で可能ではありますが、CopyToが省メモリやCPU負荷対策の観点からあまりよろしくないので、
別のやり方で行えるのであればやり方を教えていただきたいです。
分かる方、よろしくお願いします。

14:デフォルトの名無しさん
16/07/06 23:01:12.41 3aTr7TOP.net
>>13
foreachで消したらダメなんだと思う
forかwhileでも普通に昇順(i++)に消すと格納位置がずれて違う場所がRemoveされていく
forかwhileで最後から降順(i--)でやると確実で安全。
もっといい方法があると思うけど

15:デフォルトの名無しさん
16/07/06 23:12:33.81 3aTr7TOP.net
連投スマン。最後のは「多分もっといい方法があると思うけど、わからないのでそれは他の人に任せるw」
一応昇順でまわすときはRemoveしたときはi++しなければいいんだけどスマートじゃないんだよなあ

16:デフォルトの名無しさん
16/07/06 23:47:15.55 S9qDm7+H.net
コンテナの巡回中に、要素を削除したら、誤動作する
ループ {
if(条件){要素削除}
}
普通に外側のループに、コンテナを使わなければいいだけ

17:デフォルトの名無しさん
16/07/06 23:49:28.30 iKP3ua4N.net
for 文の降順処理がいいってジッちゃが言ってた。ような気がする。

18:デフォルトの名無しさん
16/07/07 00:03:26.11 Cqn+hsLw.net
降順といっても、Hashtableにindexあるのかな?
(…しかしなぜHashtable… Dictionaryではダメなのかな?)
・削除対象のkeyを集めたListを作って、そのListをループしてtblの該当要素を削除
(2回ループを回すことになるけど、List作りをLINQでやれば、まぁ、すっきりはする)
・削除しない要素だけ集めた新しいHashtableを作る
…のどっちかがいいような…

19:デフォルトの名無しさん
16/07/07 00:20:47.19 DrRAacIx.net
>>18
別の配列作って処理したくないって書いてあるから下になるな
抜き出した物も作りたくないといわれたらHashtableはindexが参照できないんだから無理って結論に

20:デフォルトの名無しさん
16/07/07 00:35:33.67 Cqn+hsLw.net
削除対象が少なければ、上のListを作る方法の方がメモリの無駄は少なくすむけどね…
逆に削除対象が多いなら下の方がいいんだと思う

21:デフォルトの名無しさん
16/07/07 00:35:47.86 Ry0ooGfS.net
Hashは、O(1) 定時間の計算か、O(log) 木だろ
ループなんかしない

22:デフォルトの名無しさん
16/07/07 01:08:17.44 LRi+CZUT.net
Linqでやるのが正解でしょ

23:デフォルトの名無しさん
16/07/07 01:50:14.86 G6Z9/BO/.net
最近オブジェクト指向エクササイズというものを知ったんだけど
1つのクラスにインスタンス変数2つ、getter、setterは使わない
というのはEntityFrameworkを使ううえで無理が出るし
1行につき1ドットまでってのはLinqで無理が出ると思うんだけど
この辺は単純に例外と思っておいていい?
それとも何か推奨される対処法があったりする?

24:デフォルトの名無しさん
16/07/07 02:57:33.14 9h7rnjZ8.net
>>13
ご要望には沿えないけど、こう書いちゃうかな。
string key in tbl.Keys.Cast<string>().ToArray()

25:デフォルトの名無しさん
16/07/07 09:08:15.73 StSHjZGi.net
>>13
List<string>DeleteKeyListを用意して判定追加と要素削除の2回にわけるかな
その方がデバッグしやすそうだ

26:デフォルトの名無しさん
16/07/07 14:36:10.59 cR5h4Dc8.net
画像ビューアのファイル選択機能として
エクスプローラ風のツリービューとリストビューを付けたいのです
URLリンク(www.ipentec.com)
このページを参考に作成したのですがvisual studioやcodepackを利用してそのまま引っ張って来るようなものはありますか?
また、ファイルの移動方法を自作アプリでやらずにwindowsの標準のコマンドプロンプト動作に投げるにはどうすれば良いでしょうか

27:デフォルトの名無しさん
16/07/07 14:52:24.48 /YvaTbjD.net
>>26
下はWINAPIになるんじゃね
Dragイベント作ってcopyかmoveでやった方が楽な予感

28:デフォルトの名無しさん
16/07/07 15:06:46.03 StSHjZGi.net
XPライクなUIを作りたいという意味だよね
エクスプローラー風と言われてもリストビューに変わってから10年経ってるし

29:デフォルトの名無しさん
16/07/07 15:25:19.93 cR5h4Dc8.net
vixという画像ビューアがあるのですが、まずソコを目指して作りたいのです

30:13
16/07/08 10:47:54.12 qHLHYGvL.net
レスありがとうございました!
削除リストを作成して、後で消すようにしました。
また、HashtableもDictionaryにするようにしました。

31:デフォルトの名無しさん
16/07/10 00:47:56.09 IeFM40zW.net
GCHandleってAllocした後もインスタンスをどこかに取っておかないと勝手にFreeされて消えます?
C++とP/Invokeで相互に呼び出すコードの何処かで
FatalExecutionExceptionが起きて困ってたんですが
GCHandleをリストの中に置いておくと例外が発生しなくなったように見えます

32:デフォルトの名無しさん
16/07/10 01:07:27.92 rCgj8vMa.net
Freeされない限りオブジェクト自体が削除されるような仕様はないと思うぞ
No


33:rmalだとアドレスが差し変わる可能性はあるから Pinnedにせずにアンマネージドの関数ポインタにデリゲート渡したりしてると危ないけど



34:名無しさん@そうだ選挙に行こう! Go to vote!
16/07/10 08:50:31.57 ks2mzQ2K.net
メソッド内でPinnedしているのはメソッド抜けたらFreeされるんじゃないかって思ったことはあるな
確認の仕方がわからないから必ずIsAllocatedで見てFreeしているがw
外でAllocしていてもし勝手にFreeされるのなら困るw

35:名無しさん@そうだ選挙に行こう! Go to vote!
16/07/10 10:56:30.30 IeFM40zW.net
GCHandle自体もGCの対象になるのなら参照を保持するためにどっかに置いておかないといけないのでは?と思いました
渡してるのはBlittableなオブジェクトではなく普通のC#のオブジェクトなので
Pinは出来ないと思います
MSDNのGCHandleの使用例だと一関数分使っただけでFreeで解放してました
この例だとスコープ抜けるまではGCHandleが有効だから問題無いのでしょうか
私のプログラムはいろいろ事情があってアプリケーション終了まで保持する必要があります
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
GCHandle.ToIntPtrはオブジェクトの内部表現を返すとありますが
GCHandleそれ自体も普通にGCの対象になるのなら
GCHandleが回収された時にIntPtrの指す内容も無効になるのでは?
FatalExecutionEngineErrorが起こるとどうデバッグして良いやらわからないので
もう見たくないです・・・

36:名無しさん@そうだ選挙に行こう! Go to vote!
16/07/10 12:09:09.40 N/CI4kdC.net
>>34
GCHandle自体は構造体でメンバもIntPtrだけなのでGCは関知しないはずです
まずは設計がおかしくないか具体的なコードとエラーコードを書くことからかな…

37:名無しさん@そうだ選挙に行こう! Go to vote!
16/07/10 12:43:38.65 IeFM40zW.net
>>35
ありがとうございます
直ったような気がしたのは気のせいか・・・
別の問題っぽいのでちゃんと整理してから書きます

38:名無しさん@そうだ選挙に行こう! Go to vote!
16/07/10 13:14:24.60 u4LDxQcE.net
そのIntPtrをネイティブの中で使ってないよね?
Normalで作成したGCHandleのToIntPtrはネイティブコードの中で有効なポインタとして使えないはず
コールバックの中でGCHande.FromIntPtrとかやるなら可能
ネイティブ中で使うにはPinnedにしないとダメ

39:名無しさん@そうだ選挙に行こう! Go to vote!
16/07/10 19:53:46.55 IeFM40zW.net
>>37
解決しました
マネージドのバイト列をC++に渡すコードで1箇所間違ってポインタの固定を解除している場所がありました
使い終わってからポインタの固定を解除するようにしたらAccessViolationやらFatalExecutionEngineErrorは起きなくなりました
ヒープが破壊されると毎回異なる場所で例外が発生するので
発見に少々手間取りました

40:デフォルトの名無しさん
16/07/11 15:22:47.57 7hd/2RYR.net
VC# を対象としてグーグルで検索したいんですが
みんなはどんな単語で検索してます?
ステータスバーつけたいなーと思って
VC# ステータスバー
で検索してもVC#の話は全然引っ掛からないし
もうおうちにかえりたい

41:デフォルトの名無しさん
16/07/11 15:43:32.75 sXHA9YNX.net
C# 〜〜の方が引っ掛かると思うぞ

42:デフォルトの名無しさん
16/07/11 15:57:20.24 /bG0/Vab.net
Visual C#ならまだしもVC#だと無理だろw
そもそもここのスレタイ見て気づけとw

43:デフォルトの名無しさん
16/07/11 16:09:48.40 dXiH2hED.net
言語の話なら、C#
IDEの話なら、Visual Studio
で検索するなぁ。
Visual C#


44:チて単語で検索したこと無い。



45:デフォルトの名無しさん
16/07/11 16:10:29.12 7hd/2RYR.net
>>40-41
ありがとう・・・ あたたかい・・・これがインターネットのぬくもりか

46:デフォルトの名無しさん
16/07/11 17:21:12.19 mNZL1sAZ.net
昔は # が検索できなかったから C# の検索は大変だったなw

47:デフォルトの名無しさん
16/07/11 18:00:51.26 21c/Fb1J.net
実行形式のアセンブリ(exe)なんだけど、他のアセンブリから参照されて
クラスライブラリ的にも利用されるアセンブリAがあるとします。
Aのコードの中で、自分が実行ファイルとして起動されたのか
他のアセンブリから参照されているのか判定する方法ってあります?

48:デフォルトの名無しさん
16/07/11 18:05:40.12 9RtbpjtG.net
>>45
exeのエントリポイントで判断

49:デフォルトの名無しさん
16/07/11 18:10:00.83 JPy01ADF.net
Assembly.GetEntryAssemblyかな

50:デフォルトの名無しさん
16/07/11 18:15:05.34 21c/Fb1J.net
>>46
mainが実行されたかどうかで判定するってことですか?
泥臭いような気もするけどそれが確実ですかね...
>>47
Assembly.GetEntryAssemblyとAssembly.GetExecutingAssemblyが同じかどうかで
判定する方法は自分も考えたんですが、もうすこし格好いい(笑)方法ないですかね。
とにかくどうもです。

51:デフォルトの名無しさん
16/07/11 18:42:30.85 aujF0DMP.net
>>39
CSharp

52:デフォルトの名無しさん
16/07/12 12:39:20.12 DwgB0X0X.net
素人です
日時で 131112345678901234 のような 18 桁の既存データがありまして
yyyy/MM/dd HH:mm:ss.fff に変換して表示したり
任意の日時からこの形式に変換して検索とかしたいのですが
1600年と9時間ずれてまして、、、これと多分同じだと思います
URLリンク(stackoverflow.com)
オフセットすればよいのでしょうがダイレクトに変換する方法があれば教えてください

53:デフォルトの名無しさん
16/07/12 12:48:51.77 dfUVeTds.net
1600年w

54:デフォルトの名無しさん
16/07/12 12:50:24.25 sNZqT3ZR.net
>>50
試してないけど↓は使えない?
DateTime.FromFileTime メソッド (Int64) (System)
URLリンク(msdn.microsoft.com)(v=vs.110).aspx

55:デフォルトの名無しさん
16/07/12 13:12:08.29 tZSPgDcN.net
どの日でも 1600年と9時間のズレなら、 その数字から
ズレ分の数字を足したり引いたりするだけでいいんじゃねーの

56:50
16/07/12 13:13:59.61 DwgB0X0X.net
すみません自己解決しました
FromFileTime
ToFileTime
というので出来そうです
>>52
はい、その通りです

57:デフォルトの名無しさん
16/07/12 13:14:11.68 r71+yGRx.net
とりあえず変換関数にまとめてオフセットしとけばいいじゃないの
その値の出どころを特定できれば逆変換の関数も用意されてると思うけど

58:デフォルトの名無しさん
16/07/12 21:41:05.53 5gnI1m0l.net
どう見ても 9 時間は時差じゃね?

59:デフォルトの名無しさん
16/07/14 09:16:24.08 C+m8YTLM.net
roslyn for scriptingのcsxで、
ランタイムにコンパイルしたとき、コンパイルエラーなどの情報の取り方がわからないのですがどこかにドキュメントか情報ありますか?

60:デフォルトの名無しさん
16/07/15 11:52:40.40 hUkr60wB.net
CやC++はわかってるけど、C#もWindowsGUIも初めての人
が対象のお勧め本はありますか?

61:デフォルトの名無しさん
16/07/15 18:13:53.98 ZmDm8hzp.net
>>58
C++でwinアプリを作れるならC#はかなり簡単らしいから本とかなくてもすぐ出来る用になると思うよ



62:C# WPF」でぐぐるかやふればいい



63:57
16/07/19 17:20:00.19 v3yTzoHI.net
コンパイルエラーは例外で投げられてました
なかなかデバッグが捗らないけど
とりあえずこれで頑張ります
ツールでも作るか

64:デフォルトの名無しさん
16/07/25 18:34:49.84 TFIdnWtI.net
>>45
そんなのが分かったとして何に使うとよ

65:デフォルトの名無しさん
16/07/25 18:36:17.01 txLZaHuP.net
そもそもexeをライブラリとして使えた?

66:デフォルトの名無しさん
16/07/25 18:43:48.98 TBSuk6cv.net
>>62
DLLと同様に参照することはできる

67:デフォルトの名無しさん
16/07/25 19:14:23.85 txLZaHuP.net
>>63
つまりエントリポイントがあればexeにもdllにもなれる、なければdllのみって事か

68:デフォルトの名無しさん
16/07/25 19:20:39.43 TFIdnWtI.net
>>63
objフォルダとbinフォルダに同じdllやexeが入っているがどっちのフォルダを参照してもいい?

69:デフォルトの名無しさん
16/07/25 19:35:04.16 yBIpEw9W.net
>>65
exeはライブラリとして使ったことないけどDLLはビルド時に参照位置から必要な場所にコピーされるだろ

70:デフォルトの名無しさん
16/07/26 17:32:31.16 7lk5fbdf.net
>>45
getmodulename

71:デフォルトの名無しさん
16/08/01 15:50:07.60 a4noEYcd.net
12.3456789 度っていうdegの出力を12.34にするにはどの関数を使えばできますか?
出力はdoubleでも構いません

72:デフォルトの名無しさん
16/08/01 15:52:18.56 NbFJgIpb.net
100倍して小数点以下切って100分の1

73:デフォルトの名無しさん
16/08/01 22:18:47.79 p/i6dojq.net
>>69
有効数字を切る関数ってないんですね
できました、ありがとうございました

74:デフォルトの名無しさん
16/08/02 21:09:59.79 bZmJ9j82.net
##.00のフォーマットじゃだめなのん?

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

76:デフォルトの名無しさん
16/08/02 21:31:28.58 1biageaY.net
>>72
四捨五入されるのか?
URLリンク(msdn.microsoft.com)
表示に使うか計算を続けるかで変わるが
個人的に表示なら.ToString("F2")とかを良く使っているな
URLリンク(dobon.net)
数値として使い続けるのなら>>69のやり方一択だが

77:デフォルトの名無しさん
16/08/02 21:40:43.95 fbhAMiPd.net
こういうのってMath.Truncateで標準実装して欲しいよな

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

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

80:デフォルトの名無しさん
16/08/02 22:09:05.46 kMeLb5Qs.net
丸め→四捨五入

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

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

83:デフォルトの名無しさん
16/08/02 22:46:11.79 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:デフォルトの名無しさん
16/08/03 08:09:04.52 izDrDrnm.net
>>74
切り捨てや切り上げは丸めと違って誤差が影響した場合のインパクトが大きいから実装したくないんだろ
「0.0999999999999999」の切り捨ての結果は大抵のプログラマは0.1を期待してるだろうけど、普通に実装したら0.0になるわな

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

87:デフォルトの名無しさん
16/08/03 08:38:06.19 nNYUFf9P.net
> 「0.0999999999999999」の切り捨ての結果は大抵のプログラマは0.1を期待してるだろうけど、
いや、それは無い

88:デフォルトの名無しさん
16/08/03 11:13:35.07 8916Nt3B.net
切り捨て?

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

90:デフォルトの名無しさん
16/08/03 11:22:03.76 vCrtu5C1.net
decimalって関係あるのか?
動的型付けのキーワードなのに

91:デフォルトの名無しさん
16/08/03 11:35:20.08 wuBisWbe.net
>>85
その発想がおかしいw
問題意識が逆立ちしてるなw

92:デフォルトの名無しさん
16/08/03 12:41:58.26 jT3/wbav.net
>>86
もしかして:dynamic
decimalはこっち
URLリンク(msdn.microsoft.com)
>>decimal キーワードは、128 ビットのデータ型を示します。
>>decimal 型は、浮動小数点型よりも有効桁数が多く、範囲が狭いので、財務や金融の計算に適しています。

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

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

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

96:デフォルトの名無しさん
16/08/03 18:26:06.69 oiDTcOGH.net
NLuaの作者に聞いたら?

97:デフォルトの名無しさん
16/08/03 18:29:01.37 vCrtu5C1.net
>>92
国産じゃないので無理です

98:デフォルトの名無しさん
16/08/03 18:32:02.06 oiDTcOGH.net
C#も国産じゃないからこのスレで質問するな

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

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

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

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

103:デフォルトの名無しさん
16/08/03 21:15:10.43 LSSVX5ne.net
>>98
普通の長さの単語なのにねぇ。

104:デフォルトの名無しさん
16/08/03 21:30:26.93 o77xN4AH.net
decimal
default
delegate
do
double
descending
dynamic

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

106:デフォルトの名無しさん
16/08/03 21:35:21.21 vCrtu5C1.net
descendingってLINQのキーワードか

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

108:デフォルトの名無しさん
16/08/03 21:50:10.97 wuBisWbe.net
>>103
キレてるように見えないとおもうけどw
特に理由がないならdecimalのような高コストな型の使用は避けるのは当たり前だw
浮動小数の演算は誤差を生む可能性があるが、それは必用な精度を確保する手段がない
ことを意味してない。

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

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

111:デフォルトの名無しさん
16/08/03 23:06:36.38 wuBisWbe.net
だから誰も金融系の話なんかしてないでしょ。
何をいってんの。
「丸めが気になる数字にdouble使うのはどうかしている」なんて寝言を言ってる奴がいるから
そんなことはねえよ、そういう話だよ。

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

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

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

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

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

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

118:デフォルトの名無しさん
16/08/04 00:09:13.58 5NqeNpQm.net
予想通り言いがかりでしたw

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

120:デフォルトの名無しさん
16/08/04 00:15:15.90 oWVthcOw.net
decimalとdoubleでそんなにコスト違うのかね
誤差とコストでどっちとるって話だが
まあそのコスト差すら気にするコストにシビアな環境なら気を付ければいいさ
そこまでシビアな環境でC#を使うこと自体の意義を問い詰めたいけどな
通常は多少のコストで誤差がなくなるなら、そっち選ぶと思うけど

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

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

123:デフォルトの名無しさん
16/08/04 00:23:01.22 Vi80rqnk.net
>>117
だから何を言ってるの?意味が分からん。
俺はdoubleにはその手の演算誤差があっても必用な精度を確保する手段はあるから
無暗にdecimalなんか使わずにdoubleを使うのが普通だと言ってるんだけど。
何が「だから」だよ。

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

125:デフォルトの名無しさん
16/08/04 00:27:02.95 Vi80rqnk.net
>>120


126: その「丸め」って言葉を恐らく君は誤用してるんだけどねw



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

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

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

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

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

132:デフォルトの名無しさん
16/08/04 00:34:43.49 bt/hw+Ix.net
相談内容置いてきぼりの議論は、
このスレ使ってあげて。
ふらっと C#,C♯,C#(議論用)
スレリンク(tech板)

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

134:デフォルトの名無しさん
16/08/04 00:41:16.26 5NqeNpQm.net
>>128
細かいことが気になるならdecimalを使って、気にならないならdouble使えばいいってことだよ
decimalを目の敵にしているのか理由が分からん
そもそもアンタはdoubleで問題になる具体例を出せないじゃないか

135:デフォルトの名無しさん
16/08/04 00:46:58.32 Vi80rqnk.net
何でdoubleで問題ないからdouble使えって言ってる人間に
doubleで問題になる具体例を求めるんだよw
意味わかんないよw

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

137:デフォルトの名無しさん
16/08/04 01:04:42.73 Vi80rqnk.net
だから「丸めが気になる」ってどういう意味?w

138:デフォルトの名無しさん
16/08/04 01:07:56.03 5NqeNpQm.net
>>132
>その発想がおかしいw
ってレスしておきながらいまさら・・・

139:デフォルトの名無しさん
16/08/04 01:09:13.13 Vi80rqnk.net
あのねえ、こんなの学部のプログラミングの最初の講義で習うような話だと思うけど、
URLリンク(ideone.com)
何も考えずにdoubleを使うと上のgrossの結果にあるように演算結果に誤差が
出ちゃうことがあるけど、ちゃんと誤差の性質を理解していれば、何度も言ってるように
必用な精度を得ることが出来るんですよ。

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

141:デフォルトの名無しさん
16/08/04 02:15:13.20 Vi80rqnk.net
>>135
有効数字が小数的1桁の数字(delta)を何回加減算しても
結果の有効数字は小数的1桁
だから累積誤差が±0.05を超えない限り、小数点1桁で丸めた値は必ず
数学的に正しい値になる。
もちろん演算結果の桁数(指数表記した時の仮数部の桁数ね)があまりに大きい
(doubleの場合確か16桁ぐらいだと思ったけど)と正しい結果にはならないけどね。

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

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


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



145:デフォルトの名無しさん
16/08/04 09:30:43.38 hQiyrQkt.net
教科書ネタは伸びるな

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

147:デフォルトの名無しさん
16/08/04 10:13:24.57 /RaQ1xov.net
まあ人づだけいっておけば、丸め処理には誤差があるぞって得意気に言ってるのかもしれないが、
それは丸め処理の誤差じゃなくて上にも何度も出てくる浮動小数の仕様に起因する誤差であって、
問題でも何でもない。
問題があるとすれば、そんな問題でもなんでもないもののせいで間違った答えを吐き出すような
コードを書いてしまう無能な、 sK75NDgMのような無能なプログラマの方だ。

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

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

150:デフォルトの名無しさん
16/08/04 18:07:34.85 9MgkqNZw.net
バタフライ効果を起こさない程度にしとけよ

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

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

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

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

155:デフォルトの名無しさん
16/08/04 19:45:50.27 /RaQ1xov.net
>>147
相変わらず何を言ってるのかさっぱり分からない。
丸めの挙動に予測不能性があるとして、そんなものに結果が影響されるような
コードを書くのはただの馬鹿だ。

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

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

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

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

160:デフォルトの名無しさん
16/08/04 20:03:08.07 /RaQ1xov.net
>>152
桁の多い演算でdecimalでしか対処できない領域があるのは最初から当たり前。
当たり前だまったく何の必要性もない型をわざわざ用意するものか。
最初から言ってるように、ありえないのは>>85のような愚かな考えだ。

161:デフォルトの名無しさん
16/08/04 20:12:27.08 zUHRzBd8.net
NGでスッキリ

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

163:デフォルトの名無しさん
16/08/04 20:20:11.12 u/EohbaA.net
物理の計算においてdoubleじゃ間に合わないケースがある極大な数×極小な数とかね
doubleまででしか使えない場合はなんとか工夫するわけだけどそれじゃ間に合わない場合がある
そういう場合のために4倍精度(128ビット)とか8倍精度(256ビット)の2進浮動小数点が使えるように
なってる環境がある
反して金計算ではよくは知らんが必要な制度はせいぜい20何桁程度だろ。
それも小数点以下は5桁もあれば十分という。。。
すべては適材適所なんだよ。

164:デフォルトの名無しさん
16/08/04 20:37:57.07 09bMzMPy.net
Π使うような場合は有理数計算するけどね

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

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

167:デフォルトの名無しさん
16/08/04 20:50:57.73 /RaQ1xov.net
しかしさあ、丸めの挙動の問題とかで
桁数の多い演算でもないのにdoubleでは対処できないケースがあるなら
後学のためにぜひideoneかどこかに実例で示して欲しいよ。
本当真面目に。
まあそんなのありえねえと思うけどさw

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

169:デフォルトの名無しさん
16/08/04 20:58:59.60 4Cs3sXx+.net
まだやってんのかよw

170:デフォルトの名無しさん
16/08/04 20:59:49.63 cADM294i.net
ここって浮動小数スレなの?

171:デフォルトの名無しさん
16/08/04 21:05:50.97 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:デフォルトの名無しさん
16/08/04 21:06:28.51 nf3Jdc8S.net
  ∧∧ ミ  ドスッ
  (  ) _____
  /  つ 話題終了|
〜(  /   ̄|| ̄ ̄ ̄
 ∪∪   || ε3
      ゙゙~゙~

174:デフォルトの名無しさん
16/08/04 21:34:01.22 /AeganYA.net
相変わらずよくわかってないトーシロですけども
とりあえず
・二進法の都合上、小数点以下の実数は完全には
表すことが出来ない
・実数を表すのに浮動小数点数方式を
使うがあくまで擬似的な手段かつ
何処かしらで丸めるので
必ず誤差は発生する。
しかしプログラミング次第でその誤差は小さくできる。
・一切の誤差が許されないような環境、
つまり銀行などの金融関係では
decimalを使う
一般教養としてはこういう理解で
よござんすよね?

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

176:デフォルトの名無しさん
16/08/04 21:41:56.25 jAu1xEMv.net
まあ質問専用スレじゃないし気の済むまでやればw

177:デフォルトの名無しさん
16/08/04 21:47:00.53 nf3Jdc8S.net
だから適材適所って言ってんだろゴラァ
どちらか片方しか使えない呪いでもあるんですかね…
両方使えるなら両方使い分ければいいだろ
速度と精度を天秤に掛ける事も出来ないんですかね

178:デフォルトの名無しさん
16/08/04 22:02:22.78 /RaQ1xov.net
>>167
だからdecimal使ったって一切の誤差を無くせるわけじゃないってばw
無くせるのは基数が2の浮動小数であることに起因する誤差だけだと言ったでしょ

179:デフォルトの名無しさん
16/08/04 22:13:24.71 esG2QQER.net
本当に誤差を避けたいときはすべて整数型で処理して割り切れない除算もしない
馬鹿らしいけど実際に俺はやってる

180:デフォルトの名無しさん
16/08/04 22:19:48.10 xurP0kD8.net
そもそも物理の世界では有効桁ってのがあってだな
丸目誤差なんてハナから相手にしてないとか

181:デフォルトの名無しさん
16/08/04 22:32:15.88 nf3Jdc8S.net
>>171
一切の誤差が嫌なら分数・n方根etc型作れよ
javaと違って演算子の定義出来るから楽だろ

182:デフォルトの名無しさん
16/08/04 22:35:32.01 /RaQ1xov.net
>>174
作れよ、だってさ
命令口調の奴って例外なくアホだな。

183:デフォルトの名無しさん
16/08/04 22:38:49.19 pbDOEnve.net
decimalの価値は、表記と内部の値が完全一致することだが
説明してもどうせ無駄なんだろうな

184:デフォルトの名無しさん
16/08/04 22:40:49.97 nf3Jdc8S.net
>>175
作れ→命令
(〜をしたいなら)作れよ→自分でやりたい事を実現するためには自分でするしかない

185:デフォルトの名無しさん
16/08/04 22:51:47.89 1Q45SAfi.net
誤差が嫌なら整数型でやればいいじゃんってのを実装したのが
まさにdecimalなんだが

186:デフォルトの名無しさん
16/08/04 23:00:21.90 u/EohbaA.net
decimalは10進浮動小数点だからな。普通の金計算の範囲では十分ってだけで誤差がなくなるわけじゃない
簡単な話、たとえば1/3は誤差なく表現できない
有理数型をサポートしてる体系があったり、C#でも自分で実装してもいいわけだけど
それでもpiを誤差なく表現できるわけではないし(笑)
全ては求められる精度によるんだよ

187:デフォルトの名無しさん
16/08/04 23:05:13.41 nf3Jdc8S.net
PIはPIとして定義するとかでいい
数学と同じ

188:デフォルトの名無しさん
16/08/04 23:10:14.23 nOpr2vNl.net
ここまでID赤いのは全部NGでおk
具体例もないから参考にもならない

189:デフォルトの名無しさん
16/08/04 23:12:39.70 vfnh4WuI.net
元々は>>69を誤差なく実行出来るのを保証したいのが出発点でないの
今となってはそれすら良く分からんが

190:デフォルトの名無しさん
16/08/04 23:15:17.05 nOpr2vNl.net
>>182
何が目的かわからな


191:ッれば誤差をどこまで許容するかわからない そして元の質問者は既に納得して解決済み



192:デフォルトの名無しさん
16/08/04 23:18:19.93 uRE0pXxR.net
ちょっとした計算でなんとなくLispを使ってしまう俺としては、モダンな言語で
そろそろ有理数型が基本型として使えるのが当たり前になってほしいところ

193:デフォルトの名無しさん
16/08/04 23:31:08.16 pbDOEnve.net
世の中には1/3円は存在しないし、πmの定規も存在しない
decimalの解像度は十分な精度を持っているということだね

194:デフォルトの名無しさん
16/08/04 23:36:46.06 /RaQ1xov.net
>>185
ちょっと単細胞過ぎるよ
カネ勘定の世界でも普通に除算は使いますw
例えば按分ね

195:デフォルトの名無しさん
16/08/04 23:55:18.85 pbDOEnve.net
10円を3つに分ける場合3円、、3円,4円で分けるよな
1/3円など存在しない金額は使いみちがない

196:デフォルトの名無しさん
16/08/05 00:08:43.40 cEIuN7pH.net
技術的にはお互いに理解してるのに、相手が理解してないと思い込んで話してるせいでぐちゃぐちゃになってる
日本語力の低さがやばい

197:デフォルトの名無しさん
16/08/05 00:17:08.00 QZhqwH4E.net
>>187
そんな単純じゃないよ。
普通の商売でも小売り以外は銭以下の単位で単価を設定するのは当たり前。
金融ならなおさらだ。
何が言いたいかって言うと、金勘定ならとにかくdecimalを使っておけば安全だ、
などということはありえないということ。

198:デフォルトの名無しさん
16/08/05 00:24:08.31 rof2NfJh.net
プライドの安さも大したもんだろ
スーパー玉出よりひどい
ここまでバカやってりゃどっちか飽きるぞ普通は
普通じゃないのがコラボレーションするとこうなる

199:デフォルトの名無しさん
16/08/05 03:39:17.62 WxI1qvCL.net
よく知らないんだが、doubleだと0.1を10回足しても1にならないって聞いたんだけど
doubleで問題ないって人は、0.1を10回足して結果表示するコード書いてみてほしい
必要な桁数の精度は整数部2桁、小数部2桁で4桁もあればいいから

200:デフォルトの名無しさん
16/08/05 06:45:29.67 9GrcbVCu.net
>>191
URLリンク(ideone.com)
( ゚∀゚)アハハハ

201:デフォルトの名無しさん
16/08/05 06:47:06.05 Kzn0CH9Z.net
ちょっとした計算はそろばんを使ってしまう俺としては、23桁以上の足し算は苦手だ

202:デフォルトの名無しさん
16/08/05 07:12:01.39 U1grrEll.net
つ 算木

203:デフォルトの名無しさん
16/08/05 07:26:46.31 t4YicZGs.net
>>189
端数はシステムでどうするか指定できる(考慮している)のが普通なんじゃね
そこまで話を膨らませたらイチャモンに思えるわ

204:デフォルトの名無しさん
16/08/05 09:28:38.14 HSLNFCI0.net
>>189
会計は取引や決算の段階で全て円単位に矯正されて、総額と明細の差額は端数処理されて別勘定に振り替えられる
金融関係はdecimalで全く問題がないんだよ

205:デフォルトの名無しさん
16/08/05 11:34:33.31 ybsuHohg.net
>>191
そもそもそういう目的で使うならdouble使わないですしおすし
使い分ければいいって話してるのにそれが分からないの?
お前はゲーム作るのにもクッソ遅いdecimal使う気?
単細胞死ね

206:デフォルトの名無しさん
16/08/05 11:38:33.06 ybsuHohg.net
【C#】decimal VS double/float [無断転載禁止]?2ch.net
スレリンク(tech板)
まだやるなら移動


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

2402日前に更新/279 KB
担当:undef