6

期待値と実際の値の 2 つの nullable double があります (値と valueExpected と呼びましょう)。パーセンテージは、100 * (値 / 期待値) を使用して求められます。ただし、valueExpected がゼロの場合は NaN を返します。これまでのところすべて良い。

NaN かどうかを確認するために、値を確認する必要がある場合はどうすればよいでしょうか。通常、次を使用できます。

if (!Double.IsNaN(myDouble))

ただし、これは null 許容値では機能しません (IsNaN は null 非許容変数でのみ機能します)。チェック (valueExpected == 0) を行うようにコードを変更しましたが、まだ興味があります。null 許容 NaN をチェックする方法はありますか?

編集:コードが機能しないと言うときは、コンパイルできないことを意味します。null の最初のテストは機能しません。

4

5 に答える 5

10

すべてのNullable<T>インスタンスで、最初にプロパティを確認してから、bool HasValueプロパティにアクセスできT Valueます。

double? d = 0.0;        // Shorthand for Nullable<double>
if (d.HasValue && !Double.IsNaN(d.Value)) {
    double val = d.Value;

    // val is a non-null, non-NaN double.
}
于 2012-11-28T03:29:38.367 に答える
3

使用することもできます

if (!Double.IsNaN(myDouble ?? 0.0))

最も内側の括弧内の値は、それが null でない場合はmyDouble(Nullable<>折り返しが削除された状態で) 、または単にis の場合のいずれ0.0myDoubleですnull。Se??オペレーター (C#) .

于 2012-12-11T22:32:40.447 に答える