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 - это значение ошибки.