ふらっと C#,C♯,C#(初心者用) Part146

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9f0b-Fgt1)
垢版 |
2019/12/11(水) 22:12:11.28ID:d09CciDz0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part145
https://mevius.5ch.net/test/read.cgi/tech/1570446977/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/01/04(土) 18:24:46.76ID:NeUDcD2dr
コードを見る人のレベルに合わせる
書いてて意味が分からない人達にそれをやっても理解を妨げるだけ
2020/01/04(土) 22:40:12.56ID:lajN/sCS0
自学習がてら書いてます
純粋にコードベースで考えた場合にどうあるのが望ましいかを身に付けておきたいです
2020/01/04(土) 22:43:17.90ID:1qz+oavua
>>226
MSは基本的にデザパタ用語を名前に含めない
あくまでMSの流儀なのでお前が従う筋合いはないが、少なくとも.NETではあまり好まれない傾向があるようだ
2020/01/04(土) 23:23:49.91ID:TMQyheu90
>>228
まずは細かいところに引っ掛からず自分の分かりやすい命名で学習を進めればいいよ。
慣れてきたら標準的ライブラリや参考書等を真似たりして自然に落ち着くとこに落ち着くと思う。
231デフォルトの名無しさん (アウアウウー Saa5-pIXJ)
垢版 |
2020/01/05(日) 18:41:51.12ID:k4uQmGiya
関数名を文字列で指定して実行する方法ってないですか?
テスト用の関数が何個もあってif文による分岐とか面倒過ぎます。
2020/01/05(日) 18:43:29.73ID:aAOSNRx/0
リフレクションでググれ
233デフォルトの名無しさん (アウアウウー Saa5-pIXJ)
垢版 |
2020/01/05(日) 18:46:16.34ID:k4uQmGiya
>>232
うわぁ知らなかった
つーかググってくださいだろ
2020/01/05(日) 18:48:19.94ID:aAOSNRx/0
何いってんだこいつ
2020/01/05(日) 18:50:27.53ID:bXDAqvmf0
>>233
質問してるくせに上から目線の上にお礼も言えないやつはさっさと死んでください
236デフォルトの名無しさん (アウアウウー Saa5-pIXJ)
垢版 |
2020/01/05(日) 18:54:40.52ID:k4uQmGiya
>>235
すいません本当は感謝してます
それにしてもこのスレ、入門っていう割には
ifとかforの質問がなくて何か上級者ぶってる気がします
DOMとかMVVMとかそんな文法知らないんですけど
2020/01/05(日) 19:25:28.08ID:y+bEWN5I0
>>236
初心者と言ったってそれが指す範囲に幅があるし、初心者なんだから自分の知らないことが出てきて当たり前だろう。
いちいちつまらないケチを付けないと気がすまないタイプなのか?
2020/01/05(日) 20:02:43.18ID:crBHIl3n0
>>229
>>230
ありがたや
2020/01/05(日) 22:30:14.47ID:rgbPi9HCr
Cにおけるerrno.h のようなものは無いですか?
コンソールアプリで、終了コードにマジックナンバー書きたくないのですが
2020/01/05(日) 22:34:35.66ID:clFA3Pd30
ifやforで質問があるならすりゃいいじゃん
過去スレ全部見てるわけじゃないが146もいってりゃそういう質問もあっただろうよ
2020/01/05(日) 22:41:17.44ID:clFA3Pd30
>>239
自分で定義すればいいのでは?
.NETにはたぶんそういった類のものは無いんじゃないかな
2020/01/05(日) 22:45:00.85ID:u1SBF/rW0
.NetFWももう4.8か
VS2019入れてビックリだよ
2020/01/05(日) 22:51:30.91ID:3XFOch5ma
>>239
勘違いしてるみたいだが、プログラムの終了コードとerrno.hは無関係だぞ
2020/01/05(日) 23:00:41.14ID:BPHXVrhY0
初心者は馬鹿だから、勉強項目のレベルが分かってない!

初心者のくせに、リフレクションみたいな黒魔術・メタプログラミングをやりたがるw
自分がやりたい機能の、勉強レベルが分かってないから、
難しい事でも、それが分からずにやりたがる

勉強レベル
1. 初心者用の本
2. Effective 何々、逆引きレシピ本
3. フレームワーク・テスト技法
4. メタプログラミング(黒魔術、動的定義)
2020/01/05(日) 23:35:24.29ID:VZarSSAfr
文字列で指定した関数を実行したいということは数十年前から初心者にはありがちな願望だが
それはダメなやり方とされている

約40年前の自分も同じ願望を持った
2020/01/05(日) 23:52:29.48ID:pAh15eMMr
>>243
すまん、しばらく使ってないからうろ覚えなんだ
cstdlib.h
だっけか

とりあえず

return 0;

とか

Environment.exit(0);

とかせずに済む方法が知りたい。
2020/01/05(日) 23:59:48.01ID:NzdiaSgk0
自前でEnumを書く
2020/01/06(月) 00:03:15.48ID:CTb2ztSI0
>>245
コード書き換えは自己進化につながるからAIの人類侵攻を防ぐために止むを得なかったのだ。
2020/01/06(月) 00:28:34.84ID:D/5LCEUkr
>>247
つまりシステム標準の定数定義は無いということ?
2020/01/06(月) 00:39:27.05ID:z7GoHnb80
>>249
https://docs.microsoft.com/ja-jp/dotnet/api/system.environment.exit?view=netframework-4.8
@No__t-0 パラメーターの場合は、0以外の数値を使用してエラーを示します。 アプリケーションでは、独自のエラーコードを列挙で定義し、シナリオに基づいて適切なエラーコードを返すことができます。
たとえば、必要なファイルが存在しないことを示す値1を返し、ファイルの形式が正しくないことを示す値2を返します。 Windows オペレーティングシステムで使用される終了コードの一覧については、Windows のマニュアルの「システムエラーコード」を参照してください。

https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes?redirectedfrom=MSDN
2020/01/06(月) 01:45:05.98ID:D/5LCEUkr
>>250
エラー以外が 0 っていう定義は、C(Unix)でもそうだからわかるけど、その0を定義してる、
Cにおける stdlib.h の EXIT_SUCCESS のようなものは無いの?
あと、「@No_t-0パラメータ」ってなんでしょう?
ググったり、手元にあるオライリーの「プログラミングC#」の索引を調べてみましたが、それらしい情報が出てきません
2020/01/06(月) 01:51:03.87ID:z7GoHnb80
>>251
>Cにおける stdlib.h の EXIT_SUCCESS のようなものは無いの?
ありません
何かエラーで意味ある情報出したいのなら定義済みの例外投げるのがいいんじゃないかな
それでも成功したときは情報出せないけど

>あと、「@No_t-0パラメータ」ってなんでしょう?
英語版見た感じ機械翻訳のミスっぽい
https://docs.microsoft.com/en-us/dotnet/api/system.environment.exit?view=netframework-4.8
2020/01/06(月) 01:58:33.40ID:D/5LCEUkr
>>252
>>239
>コンソールアプリで、終了コードにマジックナンバー書きたくないのですが

という前提なので例外は問題の解決になりません

標準の定義が存在しないことが断定できれば、独自定義を持つ理由にできるのですが
254デフォルトの名無しさん (アウアウウー Saa5-CnQr)
垢版 |
2020/01/06(月) 02:10:48.41ID:UfUfyfRwa
なんか日本人的だなあw

標準の定義が存在しようがしまいが終了コードの意味なんて
使う人が分かればそれでいいでしょ。

そもそも今時そんなもの使う人いるのかなw
いないと思うよ。だって前時代的な過去の遺物だから
2020/01/06(月) 02:21:24.64ID:D/5LCEUkr
UIアプリだと人がついてなきゃいけないから自動化できんのです
2020/01/06(月) 05:58:28.75ID:YSZbxSNB0
例外と終了コードの対応Dictionaryを作って
最上層で例外をキャッチした場合はそれを終了コードにすればいい

そもそも特殊な場面を除くとしたときC#使うような環境で
終了コードなんて 0 or not 0 以外で使う奴いるのか?
エラーメッセージを直接ログに吐くのが主流だろう
2020/01/06(月) 07:45:31.89ID:i8hCm9on0
いや、コンソールアプリの終了コードだから、最初から最上層のはなししかしてないんです。

>そもそも特殊な場面を除くとしたときC#使うような環境で
>終了コードなんて 0 or not 0 以外で使う奴いるのか?

言ってることは理解できるし、自分もそう思うけど、

それは

Environment .exit 0;

という記述の妥当性は場数を踏まないと理解できない、ってことじゃね?
場数を踏まないと理解できないようなコードを最上層には置きたくない
2020/01/06(月) 10:35:04.71ID:t86QU+4Gd
いやそれくらいenum書けよ…
2020/01/06(月) 10:45:06.66ID:vrofCXbf0
>>257
何を拘ってるのか理解できないな。
ソフトウェアの外部仕様として終了コードの値と意味を定義して、それをenumでソースに書けばいいだけでないの?
2020/01/06(月) 11:05:38.74ID:jysEDvVa0
もともとの質問としては終了コードのシステム定義がないのかって話でしょ
.NETの基本クラスライブラリでは定義されてない、で終わる話
じゃあどうするかとかは別の話
2020/01/06(月) 11:07:21.09ID:i8hCm9on0
ローカルコード定義するならenum使っても意味ないような
ローカルで閉じてるシステムで使うならそれでもいいかも知れないけど
2020/01/06(月) 11:08:56.96ID:t86QU+4Gd
>>261
じゃあ何がしたいんだよ
2020/01/06(月) 11:13:06.51ID:i8hCm9on0
>>262
>>239
の記述では足りませんか?
2020/01/06(月) 11:17:28.29ID:t86QU+4Gd
>>263
だからそれならenum書けよ
2020/01/06(月) 11:25:58.31ID:Hv00JF5o0
そもそもここでそれを聞いて
>標準の定義が存在しないことが断定
できるって理論がおかしいけどな
266デフォルトの名無しさん (ラクッペ MM85-QvtZ)
垢版 |
2020/01/06(月) 11:27:38.34ID:fbdBGVpXM
新春ガイジ品評会
2020/01/06(月) 11:28:48.24ID:jV/UXfSz0
enumなりconstなりstatic readonlyなりで定義
外部に公開する必要がある情報ならreadme等に記載
OSSならコード見ろ
仮に標準で定義されていても各数値が何を意味しているのか?はドキュメントかコードを参照するしかないじゃん
2020/01/06(月) 11:50:48.98ID:i8hCm9on0
>>264
>>261

>>267
数値の意味と、それがどこで定義されているかは別の問題では?

標準で定義されていれば、例え規格が変わっても、対応した処理系でコンパイルしなおせば同じコードがそのまま使えるけれど、ローカルで定義していたらそうはいかない
2020/01/06(月) 12:02:59.68ID:vrofCXbf0
>>268
そもそもerrno.hが終了コードを表しているというのが勘違いだぞ。あれはシステムコールや標準ライブラリ関数の戻り値の定義であって、あくまでもCのコードの中の話だ。
2020/01/06(月) 12:13:01.97ID:7++dQVmoH
>>268
何の規格の話?お前のシステムの規格が変わったのなら、なおさら独自のenum等で定義しておかなきゃバグるやろ
2020/01/06(月) 12:25:01.14ID:Vt94EpB40
そこまで言うからには
もちろんコマンドラインで
-h
ってやったら
戻り値に関するヘルプも出るんだろうな
俺は見ないけど
272デフォルトの名無しさん (ワッチョイ 814f-olRn)
垢版 |
2020/01/06(月) 13:03:54.64ID:HSlK76Pq0
初心者のつまらん質問で申し訳ありません
メッセージボックスを親フォームの中央に表示させたくて、方法を探したところ
Win32APIを使った方法を見つけましたが、結構コード量が多くて面倒くさそう・・・
これなら自前のモーダルフォームを作って親フォームの位置取得して表示させる方が簡単ですかね?
皆さんはどうされてます?
2020/01/06(月) 13:04:51.24ID:78RinjQr0
>https://docs.microsoft.com/en-us/dotnet/api/system.environment.exit?view=netframework-4.8
↑ここ読んでも分からないの?
ピンポイントで教えてもらってるのに
2020/01/06(月) 13:17:35.30ID:jysEDvVa0
すでにコードがあるならコピペするだけじゃね?
ライセンスは知らん
2020/01/06(月) 13:54:30.86ID:vrofCXbf0
>>269
誤りがあったので訂正。
戻り値そのものでなく、戻り値がエラーを示した場合に参照するerrnoの値(エラー番号)だな。
2020/01/06(月) 15:54:50.90ID:i8hCm9on0
>>269
>>246
2020/01/06(月) 15:57:32.58ID:i8hCm9on0
>>270
>>261
2020/01/06(月) 16:03:27.39ID:codN4GMx0
>>277
は?
2020/01/06(月) 16:16:51.68ID:i8hCm9on0
>>278
>>277
がどうしたの?
2020/01/06(月) 16:25:16.18ID:codN4GMx0
ごめんキチガイに触ってしまった
2020/01/06(月) 17:00:25.20ID:/c/Em2OW0
>>272
APIをラップしたクラスを作ることをお勧めする

自分でFormから作ってもいいけど文字列に合わせてウィンドウサイズを調整したり
パラメータに合わせてアイコンとかボタンを作ったりする方が面倒だと思うよ
2020/01/06(月) 17:11:39.14ID:D3635f2eM
>>272
そんなの気にしてたの最初の頃だけだったな〜
自前でフォーム作ってもアイコンとかほぼ互換にするには手間かかる
APIでも大して変わらんのでは

他でも使い回すなら手間かかるかではなく、使い勝手がいいように組める方優先
283デフォルトの名無しさん (ワッチョイ 42ad-f3Fz)
垢版 |
2020/01/06(月) 18:34:31.97ID:HrPzlOWn0
おそらくエラー定義に拘ってる人は
元々自分で定義したらC使いの上司に
「EXIT_SUCEESSとかあるだろが二重定義するなゴラァ!」
とレビューで怒られて
「自分で定義してね♡」って書いてある公式ドキュメントが欲しいんだと思う
上司を納得させられる
2020/01/06(月) 18:39:19.67ID:kN/rUhZhd
そういう話だったのになぜか途中からどこで定義するのか問題にすり替えた
どこで定義されていようが最終的には同じなのに
2020/01/06(月) 18:58:11.81ID:fXTekjlj0
>>272
WH_CBTをグローバルフックして表示位置を変更だな
2020/01/06(月) 19:01:20.67ID:codN4GMx0
>>283
>>273
287デフォルトの名無しさん (アウアウウー Saa5-CnQr)
垢版 |
2020/01/06(月) 19:09:21.84ID:vUR1r/Pua
>>272
自分なら自作するというかしてました。
標準のMessageBoxは使い辛いところが多いので。

(1) モーダルじゃない表示も可能
(2) カウントダウンして自動的に消える
(3) 背景だけ半透明表示可能

ついでにこんな機能付きのを作ったらどうでしょうか。
2020/01/06(月) 19:12:29.35ID:i8hCm9on0
>>284
だから、処理系で定義されてるのとローカルで定義されてるのじゃ根本的に違うよ
ローカルで定義してて変更したらソースコードのリビジョンが変わる
処理系の変更だけならビルド番号が変わるだけ
2020/01/06(月) 19:19:01.72ID:NtfTHL6y0
たかが終了コードの何を想定してるの?
2020/01/06(月) 19:38:09.46ID:k52Bb7eZ0
わかった、話をまとめよう

Q. 定義済みのリターンコード無いの?
A. 無い

では次の方どぞ〜
291デフォルトの名無しさん (ワッチョイ 42ad-f3Fz)
垢版 |
2020/01/06(月) 19:43:24.53ID:HrPzlOWn0
>>286
システムエラーコードとアプリケーションエラーコードがごっちゃに書いてあるのが混乱の元な気がしてきた

"In your application, you can define your own error codes in an enumeration, and return the appropriate error code based on the scenario"
canが弱く見えるのでは
「C#はヘッダファイルとかないから各自自分で定義するように!」くらいあると

そっから飛べる先に
https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499-
とかがあってさも定数があるかのように見えるのも混乱のもとかと

まあ"use a non-zero number to indicate an error"と書くなら最低ゼロくらいは定義しといてくれというのはわからんでもない
2020/01/06(月) 19:43:37.98ID:codN4GMx0
>>288
処理系で定義?????
2020/01/06(月) 19:44:51.56ID:codN4GMx0
>>291
別に定義しなくてもいいからcanなんでしょ
2020/01/06(月) 20:48:06.04ID:2EPFHDaI0
コンソールはスレッドセーフなのため?
マルチスレッドで文字出す
そしてもエラーがおきないか?安全か?
2020/01/06(月) 20:52:31.08ID:fXTekjlj0
>>294
いけぬま?
2020/01/06(月) 21:01:18.24ID:3fXeZgESr
処理系で想像してる粒度が違う気がするけど
.NET Frameworkとしては定義されてるものは無いで終わりだろ
2020/01/06(月) 21:31:26.23ID:78RinjQr0
>>291
その混乱は99.9%読み手の問題
2020/01/06(月) 22:48:28.16ID:mEVq710ia
お前らC#でWebサーバー建てたことありますか?
変な案件やらされそうで新年早々ウツ
2020/01/06(月) 22:51:30.20ID:z7GoHnb80
>>298
さすがにやったことないな
ググッたら前例はあった
https://www.c-sharpcorner.com/article/creating-your-own-web-server-using-C-Sharp/
2020/01/06(月) 22:54:19.72ID:codN4GMx0
>>298
Kestrelじゃなくて?
2020/01/06(月) 23:07:18.60ID:D2EGtjEk0
任意に呼び出せる100個程度の文字列定数を作りたい時って地道に宣言するしかないよね?
enumは使えないしDictionaryはヌルポこわいし

>>298
IISとかではなくて?
302デフォルトの名無しさん (ワッチョイ 7197-IH4P)
垢版 |
2020/01/06(月) 23:14:02.24ID:v3NiRowX0
>>301
地道に宣言するにしても、Dictionaryに地道に値を入れていく以外に簡単に生成できる方法がある
(テキストから読み込むとか、keyとvalueが同一でよい)のなら、一旦Dictionaryを作って
そこからC#のコードを文字列処理で生成してソースコードにコピペとかすると楽だよ。
C#コードの生成はもちろんC#以外の言語でもなんでもいいから慣れてる言語でやればいいし。
2020/01/06(月) 23:14:03.88ID:YSZbxSNB0
>>301
日本語の意味が取れないからどういうのを想定してるか具体例を書いてくれ
2020/01/06(月) 23:22:52.50ID:78RinjQr0
constでコンパイル時に解決したいというのでなければリソースファイルを使う
2020/01/06(月) 23:58:53.91ID:jMeFAWx00
どうせ戻り値は、4バイト整数だろ

signed int, -2,147,483,648 〜 2,147,483,647
unsigned int, 0 〜 4,294,967,295

システムが、0 〜 1,073,741,823
カスタムが、1,073,741,824 〜 2,147,483,647
の範囲を使うとして、

ひとまずカスタムは、1,073,742,000 〜 1,610,612,000 の範囲を使っておけばよい
2020/01/07(火) 00:06:26.34ID:W22n+t+k0
処理系が正確に何指してるか不明ではあるが.NETのバージョンとかコンパイラのバージョンだったとして…
それ更新したら普通バージョン上げないの?
ソースコード変わってないからビルド番号しか上げない、みたいな運用聞いたこと無いけど…
乗っかってる大元を変えるって結構大きな変更だからコードの変更が一切不要でも念の為リビジョンなりバージョンなり上げない?
2020/01/07(火) 08:52:49.60ID:xOWyMMFH0
htmlファイルをディスク上に作らずに、こちらのプログラム上で仮想生成したhtmlをWindows規定のブラウザで開かせる方法ってないでしょうか?
ウインドウメッセージなどでデータを送りつける等の方法があれば良いのですが
2020/01/07(火) 09:00:28.70ID:JXhmELVL0
詐欺請求マルウェアかよw
2020/01/07(火) 10:01:00.59ID:xOWyMMFH0
すみません、解決しました
ブラウザの対応次第なものの一般的なブラウザであればdata Urlで簡単に実現できました
310デフォルトの名無しさん (アウウィフ FFa5-p4uH)
垢版 |
2020/01/07(火) 16:12:15.29ID:2Dq0zKSWF
おまいら printf の戻り値はちゃんと毎回確認するんだぞ判ったか
311デフォルトの名無しさん (ワッチョイ 9901-8/Ff)
垢版 |
2020/01/07(火) 17:16:35.91ID:PuPIfAOU0
お断りします。
2020/01/07(火) 17:27:42.26ID:Tv0SPXaP0
Excelによる計算をマスターとした場合、
C#で浮動小数点の誤差まで再現するには、どうしたら良いのでしょうか?
floatやdoubleやdecimalをそのまま使うだけでは、完全一致はしないですよね?
2020/01/07(火) 17:39:13.63ID:wDqVPTN90
>>312
decimalは誤差がないが…
とりあえずそれはExcelの計算方法の再現であってC#の話題とは別
2020/01/07(火) 17:51:56.04ID:zRb5T0D/r
そもそものそのエクセルの計算が税法上問題なかったり物理学上の誤差などを
しっかり配慮された計算なのか?とう疑問がある
2020/01/07(火) 18:25:35.96ID:Tv0SPXaP0
>>313
はい、Excelの計算誤差も含めてC#で再現したいのです
Excel固有の関数の再現では無く、除算乗算程度です

>>314
Excelは簡単な計算でも誤差が出る時があるのは理解していますが、それでもExceによる計算結果lを「神様」として完全一致させるのが理想です
https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result
https://answers.microsoft.com/ja-jp/office/forum/office_2013_release-excel/excel%E3%81%AE%E5%8D%98%E7%B4%94%E3%81%AA%E8%A8%88/e5421c34-8053-4132-a0a6-14729e505376
2020/01/07(火) 18:30:52.77ID:RhWBTAz60
内部でexcel操作するライブラリを使って実際にexcelに計算させてその結果をもらう
って方式じゃだめかな?
何にせよ絶対関わりたくない要求仕様だなw
2020/01/07(火) 18:36:18.00ID:sMehhi+20
>>312
仕様を理解してエミュレートする
https://docs.microsoft.com/en-us/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result
https://en.wikipedia.org/wiki/Numeric_precision_in_Microsoft_Excel

無駄な努力
2020/01/07(火) 18:59:31.78ID:Tv0SPXaP0
>>316
ExcelライブラリやEEPlusが使えれば良かったのですが、今回はライセンスの関係もあってExcelが無いPCで動作させる必要があるので、Excelを裏で動かす様なことは出来ないのです。

>>317
15桁処理なので、やるとしたら計算毎に桁数をカウントするとかになりそうですかね・・・。
C#で普通に計算した方が精度も出るので、すっごく無駄なことをやることになりますね。
2020/01/07(火) 19:04:39.58ID:EurMb9rX0
一体どんなアホが集まればそんなふざけた案件が出来上がるんだ…
2020/01/07(火) 19:18:53.11ID:OMl1FHHvd
>>318
EPPlusやClosedXMLなら、Excelがマシンにインストールされている必要はないやろ
321デフォルトの名無しさん (アウアウウー Saa5-pIXJ)
垢版 |
2020/01/07(火) 20:18:05.17ID:cpbbTuYka
これはC#じゃなくて、CやC++に言えることかもしれませんが、
List<int> test=new List<int>();
for(int i=0; i<100000000; i++)
test.Add(123456789);
このような膨大な要素のリストを作った場合でも、
プログラムが動くのは、変数はメモリではなくHDD領域に格納されているからでしょうか?
メモリに全て格納すれば、メモリ不足でプログラムは動きませんよね?
322デフォルトの名無しさん (アウアウウー Saa5-CnQr)
垢版 |
2020/01/07(火) 20:25:58.17ID:IHn/p+8Ca
>>315
8086の時代じゃあるまいし、30年前だって実数計算なんかHW処理だよw
つまり、CPUさえ同一なら(変なことをやってないかぎり)VBだろうがExcelだろうがC#だろうが計算結果は同じになるはず。

現に>>315の計算C#でやっても同じ答えが出るよ
2020/01/07(火) 20:26:35.52ID:YKIaA9us0
>>321
仮想メモリでググってみな
2020/01/07(火) 20:27:46.08ID:+2sDQ8Ye0
今どき400MBぐらい物理メモリにのっけてもそこまでって感じだけど
仮想メモリで調べよう
2020/01/07(火) 20:28:50.54ID:23MsATD60
>>321
10000000/1024/1024=95.36
95.36*4=381MB
まぁ今のPCスペックじゃ余裕じゃね。

ある時、テンプレートで消費されるメモリの方が格納データより多くなる
どこに限界があるか自分で計ってみなされ
2020/01/07(火) 20:33:16.30ID:YKIaA9us0
>>322
C++でアプリ作ったときは浮動小数点制御ワードの設定次第で、演算の精度や丸め方向が変わって演算結果に差異が出たけど、C#やexcelではどうなんだろう? 同じ条件で決めうちなのかな?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況