2

以下の操作を行う場合。

a = 0 および b = 300 の場合、「remainder_fl」は「-1.#IND」に設定されます。これは、Windows リリースの 64 ビット DLL でのみ発生します。デバッグ 64 ビット DLL、および Windows 32 ビット リリースおよびデバッグ DLL では、この問題はまったく見られません。

なぜこれが起こっているのかについて誰かが提案や指針を持っているなら、私はそれを高く評価します.

ありがとう、アッシュ

マシン構成 64 ビット Windows 2008 Std サーバー、最適化されたリリース DLL。

4

1 に答える 1

0

バグのように聞こえます、最新の Visual Studio では発生していないようで、実際に動作を示す完全なプログラムが提供されていないため、判断するのは困難です。質問を合理的に読んだことに基づいて、これを使用しました。

#include <iostream>
int main() {
    double a = 0, b = 300;
    float rem = fmod(float(a), float(b));
    std::cout << rem << "\n";
}

の初期バージョンには、このバグ レポートfmodのように不確定な値を返すという特定の問題があったことは知っています。また、型へのキャストおよび型からのキャストで発生する可能性のある問題にも注意が必要です。そこでエラーが発生する可能性があります。float

要するに、現在のバージョンの Visual Studioに対してコードを確認し、問題が解決しない場合は、Microsoft にバグ レポートを提出してください。

于 2020-10-31T09:41:15.130 に答える