У меня есть несколько двойников, которые я хочу портировать в NSDecimalNumber, потому что у меня получаются слишком плохие арифметические ошибки с плавающей точкой.
Это:
double one = 0.0000001;
double two = 1000000000.0000001;
Ониочень проблематично, но я надеюсь, что NSDecimalNumber может помочь в правильных вычислениях.Я не такой большой гений в математике, поэтому мне интересно, как правильно ввести этот метод NSDecimalNumber.
Позвольте мне попробовать:
NSDecimalNumber *one = [NSDecimalNumber decimalNumberWithMantissa:1 exponent:-7 isNegative:NO];
NSDecimalNumber *two = [NSDecimalNumber decimalNumberWithMantissa:10000000000000001 exponent:-7 isNegative:NO];
Я чувствую, что это неправильно.Я мог только догадываться.Документация не дает много информации об этом.Но, насколько я понимаю, «мантисса» является целым числом, а показатель степени указывает, где должна быть плавающая точка, путем добавления нулей.Вероятно, это также неправильно; -)
Я видел некоторые фрагменты кода, где люди просто ввели CGFloat как мантиссу и указали 0 в качестве показателя, но я могу только догадываться, что они намеревались, поэтому я не могупросто сделайте это так же, не понимая этого.
Есть идеи?