NSDecimalNumber: суммирование двух NaN приводит к переполнению?

По какой-то странной причине я получаю NSDecimalNumberOverflowException из следующего:

NSDecimalNumber *a = [NSDecimalNumber notANumber];
NSDecimalNumber *b = [NSDecimalNumber notANumber];
NSLog(@"%@",[a decimalNumberByAdding:b]);

Это кажется мне неожиданным, так как документация для notDanumber NSDecimalNumber утверждает, что любая арифметическая операция, получающая NaN в качестве аргумента, возвращает NaN...

Я получаю ту же ошибку для 1+NaN и NaN+1... к счастью, 1+1 по-прежнему дает 2.

Есть идеи о том, что происходит?

2 ответа

Решение

По запросу постеров:

Может ли быть так, что он создает сигнальный NaN против тихого NaN? Эти понятия существуют в IEEE-754, не уверен насчет NSDecimalNumber. Что произойдет, если вы делаете [x decimalNumberByAdding: x] где x - NSDecimalNumber созданный байт 1.0/0?

Почему вы хотите попробовать выполнить арифметику для значения NaN? NaN - это значение ошибки.

Другие вопросы по тегам