2011-10-25 33 views
2

我想將小數點NSNumber轉換爲int或其他我可以用數學表達的形式。這裏是我的項目的註釋代碼:NSNumber decimal到C原始值?

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

這條線獲得一個Quartz Composer Outlet,通常值爲0.512左右。

基本上,我想10乘這個,然後做一些操作,如大於和小於,看看哪些範圍是在

+1

'[Left intValue]'(請參閱[參考](http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSNumber_Class/Reference/Reference.html)) –

+4

如果值爲0.512,則需要float或double,而不是int。 – progrmr

回答

3

由於看起來您正在處理小數分量,因此您希望將其轉換爲浮點數或雙精度來執行操作,具體取決於您期望值的大小。一個浮動應該沒問題,除非你處理的是可笑的大或精確的數字。下面是它會怎麼看,例如:

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]來實現。

+0

不要忘記在將它存儲回去之前將它除以10,否則您會發現該數字呈指數級增長。 –

+0

沒錯 - 這只是填寫代碼的基礎上,他問。 –

+0

謝謝 - 這是一個偉大的幫助:) – Josh

1

使用的NSNumber的方法之一:

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

這對於「0.512左右的值」來說效果不好。 –

+0

公平點,對不起。無論如何,作爲一種「將小數NSNumber轉換爲int」的方式是很好的。 – ayoy

+0

謝謝 - 我已經將它集成到我的系統中:) – Josh