NSNumber десятичное в C примитивное значение? - PullRequest
2 голосов
/ 25 октября 2011

Я хочу преобразовать десятичную NSNumber в int или другую форму, с которой я могу сделать математику.Вот аннотированный код для моего проекта:

NSNumber *Left = [left valueForOutputKey:@"Y"];

Эта строка получает Quartz Composer Outlet, обычно со значением около 0,512.

По сути, я хочу умножить это на 10, а затемвыполните некоторые операции, например, больше и меньше, чтобы увидеть, в каком диапазоне он находится.

Ответы [ 2 ]

3 голосов
/ 25 октября 2011

Поскольку похоже, что вы имеете дело с дробным компонентом, вы хотите преобразовать его в число с плавающей запятой или в двойное число для выполнения ваших операций, в зависимости от того, насколько велико ожидаемое значение. Поплавок должен быть в порядке, если вы не имеете дело со смехотворно большими или точными числами. Вот как это будет выглядеть, например:

float lValue = [[left valueForOutputKey:@"Y"] floatValue];

lValue *= 10;

if (lValue < 10) {
    // do whatever
}
else if (lValue > 50) {
    // do whatever
}

Затем, чтобы сохранить значение обратно в вашей розетке или что-то еще, вы упаковываете его обратно в NSNumber:

NSNumber *newValue = [NSNumber numberWithFloat:lValue];

[left setValue:newValue forKey:@"Y"];

Возможно, вам придется преобразовать newValue в строку, чтобы отобразить ее в элементе управления, просто используйте [newValue stringValue], чтобы сделать это.

1 голос
/ 25 октября 2011

Используйте один из методов NSNumber:

int leftInt = [Left intValue];
float leftFloat = [Left floatValue];
double leftDouble = [Left doubleValue];
...