Я хочу сделать некоторую довольно сложную арифметику, которые требуют очень высокой точности, т.е. расчетаКак убедиться, что NSDecimalNumber не представляет дробных цифр?
10000000000 + 0,00000000001 = 10000000000,00000000001 10000000000,00000000001 * 3 = 30000000000,00000000003
Я хочу использовать NSDecimalNumber для такого рода математики, но Проблема заключается в следующем: как прокормить ее этими значениями?
В документации сказано:
- (id)initWithMantissa:(unsigned long long)mantissa exponent:(short)exponent isNegative:(BOOL)flag
Первая проблема, которую я вижу, это мантисса. Он требует долгого отсутствия без знака. Насколько я понимаю, этот тип данных, это плавающая точка, верно? Так что, если это так, на этом этапе введенное значение уже «грязно». У него могут быть ненужные дробные цифры где-то в конце. Я не мог найти хорошую документацию на «unsigned long long» из apple, но я помню фрагмент кода, в котором кто-то подавал мантиссу с CGFloat, поэтому я предполагаю, что это тип с плавающей точкой.
Ну, если это действительно какой-то тип с плавающей точкой с плавающей точкой, тогда возникает сложный вопрос: как получить чистое, действительно чистое целое число в эту вещь? Настолько чистый, что я мог бы умножить его на полтриллиона, не получив неправильных результатов?
Есть ли хорошие учебники по использованию NSDecimalNumber на практике?
Редактировать: здесь нет проблем! Всем спасибо!
unsigned long long не является типом с плавающей точкой, это 64-разрядное целое число без знака –
отлично! это означало бы, что все мои проблемы исчезли по этому поводу. спасибо Дугу! – 2009-08-26 14:35:07