どっち呼んでるかは確認してる?
https://docs.microsoft.com/ja-jp/dotnet/api/system.mathf.sqrt?view=net-5.0
https://docs.microsoft.com/ja-jp/dotnet/api/system.math.sqrt?view=net-5.0
Visual Studio 2010 Part21
246デフォルトの名無しさん
2021/11/09(火) 14:06:35.22ID:JLiNtnwO247デフォルトの名無しさん
2021/11/09(火) 14:12:58.99ID:JLiNtnwO とりあえず補足
http://codepad.org/evcGt5sW
http://codepad.org/evcGt5sW
248デフォルトの名無しさん
2021/11/09(火) 14:19:16.35ID:GN60fzOT 確定っぽい
249デフォルトの名無しさん
2021/11/09(火) 14:59:14.95ID:dO6zD4He250デフォルトの名無しさん
2021/11/09(火) 16:31:34.45ID:dO6zD4He251デフォルトの名無しさん
2021/11/09(火) 16:48:46.70ID:11xPhQ7m どっかで型変換しちゃってるんでしょ
面倒なことせずにABC全部doubleで統一したらいいよw
面倒なことせずにABC全部doubleで統一したらいいよw
252デフォルトの名無しさん
2021/11/09(火) 18:24:21.94ID:dO6zD4He どこかで型変換してしまっているんですかねぇ。。
お伝えできていませんでしたが、A、BからC.dllへ渡す引数はすべてInt型です。
C.dll内の数値計算でfloat,doubleが使われています。C.dll内で型変換を
してしまっているのなら、A,Bどちらからも条件は同じはずなのに・・
私としてはVisualStudioの設定の問題かと思ってこちらに書き込みましたが、
スレチな可能性が出てきましたので、この辺でおいとましようかと思います。
お伝えできていませんでしたが、A、BからC.dllへ渡す引数はすべてInt型です。
C.dll内の数値計算でfloat,doubleが使われています。C.dll内で型変換を
してしまっているのなら、A,Bどちらからも条件は同じはずなのに・・
私としてはVisualStudioの設定の問題かと思ってこちらに書き込みましたが、
スレチな可能性が出てきましたので、この辺でおいとましようかと思います。
253デフォルトの名無しさん
2021/11/09(火) 18:25:07.92ID:8kpY2GOq >AとBのアプリからC.dllの同じ関数を同じ引数で呼んでいる
あやCすぎる
あやCすぎる
254デフォルトの名無しさん
2021/11/09(火) 19:11:41.21ID:11xPhQ7m ABはこのどちらかの問題があるはず
・dllに同じ値を渡してるつもりだけど、実は異なる値を渡してる
・dllから異なる値が返ってきてるつもりだけど、実は同じ値を受け取ってから異なる値にしてしまってる
Cは小数点の計算誤差を拡大してる状態だろうからそこも修正すべきだけど、とりあえず今回の問題とは無関係
まぁABCの全ソースをうpするぐらいじゃないとわからないな(一部ソースにするとたいていそこに問題あるから全ソースじゃないとダメ)
・dllに同じ値を渡してるつもりだけど、実は異なる値を渡してる
・dllから異なる値が返ってきてるつもりだけど、実は同じ値を受け取ってから異なる値にしてしまってる
Cは小数点の計算誤差を拡大してる状態だろうからそこも修正すべきだけど、とりあえず今回の問題とは無関係
まぁABCの全ソースをうpするぐらいじゃないとわからないな(一部ソースにするとたいていそこに問題あるから全ソースじゃないとダメ)
255デフォルトの名無しさん
2021/11/09(火) 19:20:31.38ID:eGS5fyGL ABから完全に同一条件で同一のメソッドを呼んでいるかが最初に確認すべきことだと思うんだけど
そこを誰も聞かないのが凄いねw
そこを誰も聞かないのが凄いねw
256デフォルトの名無しさん
2021/11/10(水) 00:47:51.68ID:UV3syQpY なにを期待してるんか知らんけど
そもそも真面目に答える義務なんて無いから
ノイズだらけの問題にまともな答えが来ると思ってる方が可笑しい
そもそも真面目に答える義務なんて無いから
ノイズだらけの問題にまともな答えが来ると思ってる方が可笑しい
257デフォルトの名無しさん
2021/11/10(水) 08:39:33.56ID:gxiWSUFZ 質問主です。
いいえ、皆さんの意見は参考になっています。ありがとうございます。
ソースコード全部は難しいので、現象を簡略化してみました。
C.dllに次の関数を用意し、A、Bから呼び出しました。
public static int test()
{
string tmpStr = "";
tmpStr += "Math.sqrt(2f) = " + System.Math.Sqrt(2.0f).ToString() + "\n";
tmpStr += "Math.sqrt(2d) = " + System.Math.Sqrt(2.0d).ToString() + "\n";
string tmpFileName = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "debug.txt");
System.IO.File.WriteAllText(tmpFileName, tmpStr);
return 1;
}
結果は次の通りです。
A:
Math.sqrt(2f) = 1.41421353816986
Math.sqrt(2d) = 1.41421353816986
B:
Math.sqrt(2f) = 1.4142135623731
Math.sqrt(2d) = 1.4142135623731
A、Bと引数、結果のやり取りをしていないので、無意識の型変換はされていないと思うのですが、
見逃している点があるのでしょうか。
いいえ、皆さんの意見は参考になっています。ありがとうございます。
ソースコード全部は難しいので、現象を簡略化してみました。
C.dllに次の関数を用意し、A、Bから呼び出しました。
public static int test()
{
string tmpStr = "";
tmpStr += "Math.sqrt(2f) = " + System.Math.Sqrt(2.0f).ToString() + "\n";
tmpStr += "Math.sqrt(2d) = " + System.Math.Sqrt(2.0d).ToString() + "\n";
string tmpFileName = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "debug.txt");
System.IO.File.WriteAllText(tmpFileName, tmpStr);
return 1;
}
結果は次の通りです。
A:
Math.sqrt(2f) = 1.41421353816986
Math.sqrt(2d) = 1.41421353816986
B:
Math.sqrt(2f) = 1.4142135623731
Math.sqrt(2d) = 1.4142135623731
A、Bと引数、結果のやり取りをしていないので、無意識の型変換はされていないと思うのですが、
見逃している点があるのでしょうか。
258デフォルトの名無しさん
2021/11/10(水) 09:27:09.70ID:morNzhKw A は import Mathf
B は import Math
というオチとか
B は import Math
というオチとか
259デフォルトの名無しさん
2021/11/10(水) 09:32:32.80ID:72cRDnd/ 綺麗にAがfloat、Bがdoubleになってるな
省略した部分に問題があるよ
省略した部分に問題があるよ
260デフォルトの名無しさん
2021/11/10(水) 11:58:23.46ID:mPrRdq/u Math 使ってるつもりが Mathf が使われてるケース
https://shibuya24.info/entry/mathf_vs_math
https://shibuya24.info/entry/mathf_vs_math
261デフォルトの名無しさん
2021/11/10(水) 12:26:40.94ID:gxiWSUFZ MathF、Aの結果がfloat、いろいろご助言ありがとうございます。
MathFについては、私も調べてみたのですが、.NETのVer.5から追加されており、
今使っているVS2010の.NET Ver.4では実装されていないようです。
とはいえ核心に近づいていると感じますので、同様の問題に引っかかっていないか、
調べています。
MathFについては、私も調べてみたのですが、.NETのVer.5から追加されており、
今使っているVS2010の.NET Ver.4では実装されていないようです。
とはいえ核心に近づいていると感じますので、同様の問題に引っかかっていないか、
調べています。
262デフォルトの名無しさん
2021/11/10(水) 12:38:22.20ID:gxiWSUFZ 呼び出し方については、下記まで簡略化しました。
A,Bとも(BはFormAとFormBと読み替え)
namespace WindowsApplication1
{
public partial class FormA:Form
{
public FormA()
{
InitializeComponent();
tlib.tcls.test();
}
}
}
C.dllは
namespace tlib
{
public static class tcls
{
public static int test()
{
>>257と同じ
}
}
}
A、BともC.dllをソリューションエクスプローラーの「参照設定」から追加しました。
A,Bとも(BはFormAとFormBと読み替え)
namespace WindowsApplication1
{
public partial class FormA:Form
{
public FormA()
{
InitializeComponent();
tlib.tcls.test();
}
}
}
C.dllは
namespace tlib
{
public static class tcls
{
public static int test()
{
>>257と同じ
}
}
}
A、BともC.dllをソリューションエクスプローラーの「参照設定」から追加しました。
263デフォルトの名無しさん
2021/11/10(水) 12:56:54.42ID:72cRDnd/ 簡略した形式でいいから誰でも再現できるようにABC全ソース(プロジェクト一式)をzipでかためてどっかにうpしろって
>>262は言葉にしたら「ACとABは同じソースコードなのに結果が変わる」だからな。それはあり得ないんだよ
>>262は言葉にしたら「ACとABは同じソースコードなのに結果が変わる」だからな。それはあり得ないんだよ
264デフォルトの名無しさん
2021/11/10(水) 13:03:25.84ID:/xBD3bqR 実は C.dll が2個あるとかは?
A と B の置き場所カレントディレクトリを一緒にして C.dll もそこに置いて確認はしたか
A と B の置き場所カレントディレクトリを一緒にして C.dll もそこに置いて確認はしたか
265デフォルトの名無しさん
2021/11/10(水) 15:01:00.72ID:gxiWSUFZ 全ソースを準備している途中で、どこかの段階でAの結果がBと一致するようになりました。
ありがとうございます。ここまでくれば徐々にAを戻していって、自力で原因に
たどり着けそうです。皆様の助言のおかげです。
ありがとうございます。ここまでくれば徐々にAを戻していって、自力で原因に
たどり着けそうです。皆様の助言のおかげです。
266デフォルトの名無しさん
2021/11/10(水) 15:58:40.41ID:4cUwoZ2K やっぱりここで言ってるのとは違って実際には「違うことやってるから違う結果が出た」だけの話だよねw
最初からそうだと思ったよ。
プロジェクトの設定にMath.Sqrtとかの結果に影響を与えるようなオプションなんて存在しないしw
最初からそうだと思ったよ。
プロジェクトの設定にMath.Sqrtとかの結果に影響を与えるようなオプションなんて存在しないしw
267デフォルトの名無しさん
2021/11/10(水) 16:29:30.75ID:VzdAvmBl コンパイルオプションで常にdoubleをfloatで計算するようなのあったっけ
268デフォルトの名無しさん
2021/11/10(水) 16:44:46.75ID:gxiWSUFZ 質問主です。
原因は、ネットから落として来たフリーのDirectX関係のライブラリでした。
このライブラリの初期化前に実行するとSystem.Math.Sqrtは正しい(doubleの)
答えを返します。回避策としてSystem.Math.Powを使えそうです。
このライブラリがSystem.Mathに影響を与えるはずがない、と思い込んでいた私が
間違っておりました。
皆様のご助言、大変助かりました。
原因は、ネットから落として来たフリーのDirectX関係のライブラリでした。
このライブラリの初期化前に実行するとSystem.Math.Sqrtは正しい(doubleの)
答えを返します。回避策としてSystem.Math.Powを使えそうです。
このライブラリがSystem.Mathに影響を与えるはずがない、と思い込んでいた私が
間違っておりました。
皆様のご助言、大変助かりました。
269デフォルトの名無しさん
2021/11/10(水) 17:23:35.18ID:VzdAvmBl なるほど
>フリーのDirectX関係のライブラリ
kwsk
>フリーのDirectX関係のライブラリ
kwsk
270デフォルトの名無しさん
2021/11/11(木) 01:04:23.31ID:AIYNyyhT271デフォルトの名無しさん
2021/11/11(木) 09:18:55.62ID:SpIFedoW 余計な事話さなければばれないのに
272デフォルトの名無しさん
2021/11/11(木) 09:27:27.85ID:ixmAa2h+ そりゃソースなんてうpりたくないですし…
273デフォルトの名無しさん
2021/11/11(木) 10:48:39.76ID:xUMRmi1T 標準ライブラリの置き換えはわりとやるぞ
例えばPCのシステムタイム変更したくない/できないからkernel32のGetTimeZoneInformationの動作変えるとかさ
math.sqrtが置換できるのかは知らないけどdirectx系ならやりたくなってもおかしくない
例えばPCのシステムタイム変更したくない/できないからkernel32のGetTimeZoneInformationの動作変えるとかさ
math.sqrtが置換できるのかは知らないけどdirectx系ならやりたくなってもおかしくない
274デフォルトの名無しさん
2021/11/12(金) 08:37:33.57ID:/mOMSKGK 質問主です。
ライブラリの作者の方に相談したところ、これはDirect3D 9の仕様であり、計算速度を稼ぐために
CPUの浮動小数点演算の精度をfloatに変更するのがデフォルトになっているとのことでした。
それを無効化するオプションの設定方法を教えていただき、無事解決しました。
ライブラリの作者の方に相談したところ、これはDirect3D 9の仕様であり、計算速度を稼ぐために
CPUの浮動小数点演算の精度をfloatに変更するのがデフォルトになっているとのことでした。
それを無効化するオプションの設定方法を教えていただき、無事解決しました。
275デフォルトの名無しさん
2021/11/12(金) 10:36:52.59ID:uCoii1J0 >Direct3D 9の仕様
ほう
オプション描けよ
ほう
オプション描けよ
276デフォルトの名無しさん
2021/11/12(金) 10:51:59.06ID:/mOMSKGK DirectXの初期化時にD3DCREATE_FPU_PRESERVEというフラグをセットすること
により、回避できるそうです。
により、回避できるそうです。
277デフォルトの名無しさん
2021/11/12(金) 10:57:11.64ID:uCoii1J0 GJ
278デフォルトの名無しさん
2021/11/12(金) 11:09:39.08ID:FZk+tejh https://docs.microsoft.com/ja-jp/windows/win32/direct3d9/d3dcreate
Direct3D 浮動小数点演算の精度を、呼び出し元のスレッドで使用される有効桁数に設定します。
このフラグを指定しない場合、Direct3D では、次の2つの理由により、
既定で単精度のラウンドツーニアモードが使用されます。
倍精度モードでは、Direct3D のパフォーマンスが低下します。
Direct3D の部分は、浮動小数点単位の例外がマスクされることを想定しています。
これらの例外をマスク解除と、未定義の動作が発生する可能性があります。
なるほど最近のバージョンでも起こり得るのかな
Direct3D 浮動小数点演算の精度を、呼び出し元のスレッドで使用される有効桁数に設定します。
このフラグを指定しない場合、Direct3D では、次の2つの理由により、
既定で単精度のラウンドツーニアモードが使用されます。
倍精度モードでは、Direct3D のパフォーマンスが低下します。
Direct3D の部分は、浮動小数点単位の例外がマスクされることを想定しています。
これらの例外をマスク解除と、未定義の動作が発生する可能性があります。
なるほど最近のバージョンでも起こり得るのかな
279デフォルトの名無しさん
2021/11/12(金) 13:01:11.41ID:JADHf6kW Dirext3D内部の設定がSystem.Mathに影響を与えるってこと?w
よく知らんがFPU自体が演算精度の設定を持ってて、
プロセス全体の演算精度がそれに影響されるってこと?
聞いたことないけどマジならヤバいねw
よく知らんがFPU自体が演算精度の設定を持ってて、
プロセス全体の演算精度がそれに影響されるってこと?
聞いたことないけどマジならヤバいねw
280デフォルトの名無しさん
2021/11/12(金) 13:20:58.34ID:vJNDJ1AG こんなのあった
Unable to make double calculations after D3D device created
https://stackoverflow.com/questions/8890429/unable-to-make-double-calculations-after-d3d-device-created
Unable to make double calculations after D3D device created
https://stackoverflow.com/questions/8890429/unable-to-make-double-calculations-after-d3d-device-created
281デフォルトの名無しさん
2021/11/12(金) 18:48:12.56ID:JnXYuZWY 割と見つかる
>>274 のDirectXのライブラリの作者の方のチョンボか
>>270 の言う通り本人か
http://slapper.sblo.jp/article/38594486.html
https://so-zou.jp/software/tech/library/managed-direct3d/troubleshooting/operation-precision.htm
http://scientistb.blog42.えふしー2.com/blog-entry-148.html
https://qiita.com/mod_poppo/items/9588b6f425ffe4b5c7bf
https://qiita.com/YamadaSan/items/63cdc124c191e3c3fff1
https://qiita.com/yuji_yasuhara/items/0f94f3b60b4525dd1e74
>>274 のDirectXのライブラリの作者の方のチョンボか
>>270 の言う通り本人か
http://slapper.sblo.jp/article/38594486.html
https://so-zou.jp/software/tech/library/managed-direct3d/troubleshooting/operation-precision.htm
http://scientistb.blog42.えふしー2.com/blog-entry-148.html
https://qiita.com/mod_poppo/items/9588b6f425ffe4b5c7bf
https://qiita.com/YamadaSan/items/63cdc124c191e3c3fff1
https://qiita.com/yuji_yasuhara/items/0f94f3b60b4525dd1e74
282デフォルトの名無しさん
2021/12/02(木) 21:49:14.57ID:1bhUWA4L デバッグ時にのみ環境変数を設定したいのですが
プロジェクト→プロパティ構成プロパティ→デバッグ→環境
で設定しようとしても1つしか設定出来ません
hoge1=a
hoge2=b
のようにしてもhoge1のみしか有効になりません
解決策あるでしょうか?
プロジェクト→プロパティ構成プロパティ→デバッグ→環境
で設定しようとしても1つしか設定出来ません
hoge1=a
hoge2=b
のようにしてもhoge1のみしか有効になりません
解決策あるでしょうか?
283デフォルトの名無しさん
2021/12/02(木) 22:45:10.20ID:yWr6GauZ pathを複数設定するときに複数行で書けず1行にしないといけなくて困ったことあるけど、それもだめなのかよ。なんとかしてもらいたいな
ソースコード中で#ifdef DEBUGとか使って設定したら?
ソースコード中で#ifdef DEBUGとか使って設定したら?
284デフォルトの名無しさん
2022/09/09(金) 14:00:29.20ID:070P2JiQ yotube-dlってVC2010を使ってるけど脆弱性とか大丈夫?
285デフォルトの名無しさん
2022/09/09(金) 14:48:17.39ID:rZ/ATUsx 使っているのはexe化しているpy2exeだから、
心配なら最新のPython上で動かせばいい。
心配なら最新のPython上で動かせばいい。
286デフォルトの名無しさん
2023/10/16(月) 13:25:52.86ID:AH/C+Ejr 「好き」という言葉が僕に勇気を与えてくれるんだ
287デフォルトの名無しさん
2025/07/18(金) 08:15:09.17ID:fXyPJUhP マルチの質問すいません
バージョン (>= 2.0.0.593) のパッケージ CoreTweet が見つかりません
- 49 バージョンが nuget.org に見つかりました。 [ 最も近いバージョン: 2.0.0-beta.1 ]
- 1 バージョンが CoreTweet に見つかりました。 [ 最も近いバージョン: 2.0.0-beta.1 ]
- 0 バージョンが Microsoft Visual Studio Offline Packages に見つかりました
visual studioのこれ解消できません
どなたか教えてくれませんか?
バージョン (>= 2.0.0.593) のパッケージ CoreTweet が見つかりません
- 49 バージョンが nuget.org に見つかりました。 [ 最も近いバージョン: 2.0.0-beta.1 ]
- 1 バージョンが CoreTweet に見つかりました。 [ 最も近いバージョン: 2.0.0-beta.1 ]
- 0 バージョンが Microsoft Visual Studio Offline Packages に見つかりました
visual studioのこれ解消できません
どなたか教えてくれませんか?
288デフォルトの名無しさん
2025/07/19(土) 22:08:56.13ID:UFx/XKLA289デフォルトの名無しさん
2025/08/03(日) 19:41:35.99ID:+HxYW1Sr てsと
レスを投稿する
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★4 [BFU★]
- 小野田氏、”中国経済への依存“に警戒感 高市首相の国会答弁巡り [煮卵★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- 日本が「世界で最も魅力的な国」1位に!✨「魅力的な都市」では東京が2位 「魅力的な地域」は北海道が7位に [煮卵★]
- 台湾声明 「台湾は独立した主権国家、中国は台湾を統治したことがなく、中国は口出しする権利ない」 中国が高市首相に抗議で ★7 [お断り★]
- 【サッカー】独占入手 最年長JリーガーにW不倫疑惑 『お風呂覗きたいんですが笑』LINE流出も… 慰謝料トラブルを本人に直撃 [冬月記者★]
- 東浩紀「日本はいままさに駆け引きをしている。」高市有事にピシャリ [834922174]
- 日経平均、49000円割れ 国賊高市を許すな [402859164]
- 【悲報】麻生太郎、石破憎しで高市を擁立し晩節を汚す [884040186]
- 【高市速報】日本「中国さんお願い首脳会談させて!ねえってば!😭」 [931948549]
- とうすこ🏡愛され絵文字♡🤥👊😅👊👶♡
- 中国とのパイプ役がいない高市政権、実施詰みか [668970678]
