Это желательное поведение. Вы могли бы подумать, что Math.Pow(1, double.NaN)
возвращает 1
в качестве разумного выбора, и вы могли бы выдвинуть аргумент в вашу пользу, когда речь идет о строковых литералах, но, по-моему, это проваливается, когда происходит следующее:
var i = Whatever();
var d = SomeRatherDifficultOperationYouDidntImplement();
var result = Math.Pow(i, d);
Почему это должно возвращаться 1
? Может быть, d
быть NaN
- это то, чего не должно происходить; Вы глотаете потенциальную ошибку здесь. NaN
должен распространяться всегда, есть вероятность, что некоторые предыдущие вычисления где-то пошли не так.
Если у вас есть конкретный сценарий, где Math.Pow(1, double.NaN)
должно быть 1
, тогда используйте конкретный код для этого случая и прокомментируйте его так, чтобы было ясно, что это заданное и требуемое поведение.