2016-09-07 5 views
0

Я получаю это от webservice "rateavg": "2.6111"Как преобразовать это значение в абсолютное значение?

Теперь я получаю это в строке. Как это сделать, если он наступит 2.6, он покажет 3, и если он выйдет 2.4 или 2.5, он покажет 2?

Как получить это, я не получаю. пожалуйста, помогите мне

+0

какой ответ вы ожидаете –

+0

вы можете показать ваш код попробовал –

+0

я не получаю, с чего начать это, я делаю это в первый раз. – user6438311

ответ

1

Я придумал это, копия вашего запроса:

NSString* str = @"2.611"; 
double duble = [str floatValue]; 

NSInteger final = 0; 


if (duble > 2.5) { 
    final = ceil(duble); 
}else{ 
    final = floor(duble); 
} 

NSLog(@"%ld",(long)final); 

Так что случай с использованием либо ceil или floor методы.

Edit: Так как вы хотите его для всех двойников:

NSString* str = @"4.6"; 
double duble = [str floatValue]; 

NSInteger final = 0; 

NSInteger temp = floor(duble); 
double remainder = duble - temp; 

if (remainder > 0.5) { 
    final = ceil(duble); 
}else{ 
    final = floor(duble); 
} 

NSLog(@"%ld",(long)final); 
+0

это будет только для 2.5, если получится другое значение, например, 1.6 или 3.7 из webservice, тогда оно будет работать? – user6438311

+0

обновил мой ответ 'остатком' –

+0

Помогло ли вам это? –

2

Try This

float f=2.6; 
NSLog(@"%.f",f); 

Надеется, что это помогает.

+0

Что относительно отрицательных значений? –

+0

Если -2.6 получит -3 по моему коду. –

1

плз использовать эту

lblHours.text =[NSString stringWithFormat:@"%.02f", [yourstrvalue doubleValue]]; 

обновления

NSString *a [email protected]"2.67899"; 
    NSString *b =[NSString stringWithFormat:@"%.01f", [a doubleValue]]; 
    // b will contane only one vlue after decimal 
    NSArray *array = [b componentsSeparatedByString:@"."]; 

    int yourRating; 
    if ([[array lastObject] integerValue] > 5) { 

     yourRating = [[array firstObject] intValue]+1; 

    } 
    else 
    { 
     yourRating = [[array firstObject] intValue]; 
    } 
    NSLog(@"%d",yourRating); 
+0

он даст 2.6 – user6438311

+0

, если вы хотите 2.6, то используйте @ "%. 01f" –

+0

i dont want 2.6, я хочу 3, если я получаю 2.6 и хочу 2, если я получаю 2.4 – user6438311

1

проверить это

float floatVal = 2.6111; 
long roundedVal = lroundf(floatVal); 
NSLog(@"%ld",roundedVal); 
+0

проверьте значение 2.5111 .. :) – vaibhav

+0

, если значение равно 2.5111, тогда выход равен 3 –

+0

, поэтому его не правильный выход. – vaibhav

1

Try ниже код, который я тестировал и работать на каждые цифры,

NSString *str = @"2.7"; 

NSArray *arr = [str componentsSeparatedByString:@"."]; 


NSString *firstDigit = [arr objectAtIndex:0]; 
NSString *secondDigit = [arr objectAtIndex:1]; 

if (secondDigit.length > 1) { 

    secondDigit = [secondDigit substringFromIndex:1]; 
} 

int secondDigitIntValue = [secondDigit intValue]; 
int firstDigitIntValue = [firstDigit intValue]; 

if (secondDigitIntValue > 5) { 

    firstDigitIntValue = firstDigitIntValue + 1; 
} 

NSLog(@"final result : %d",firstDigitIntValue); 

Или другое решение - немного короткий

NSString *str1 = @"2.444"; 

float my = [str1 floatValue]; 

NSString *resultString = [NSString stringWithFormat:@"%.f",my]; // if want result in string 

NSLog(@"%@",resultString); 

int resultInInt = [resultString intValue]; //if want result in integer 
+0

, если значение равно 2.15 @ketan parmar –

+0

, тогда он вернет '2', если значение' 2.15' !! – Lion

+0

Okay @Ketan parmar –

0

Для круглого значения до ближайшего целого использования roundf() функция от math ,

импорт math.h первая:

#import "math.h" 

Пример,

float ValueToRoundPositive; 

ValueToRoundPositive = 8.4; 

int RoundedValue = (int)roundf(ValueToRoundPositive); //Output: 8 

NSLog(@"roundf(%f) = %d", ValueToRoundPositive, RoundedValue); 


float ValueToRoundNegative; 

ValueToRoundNegative = -6.49; 

int RoundedValueNegative = (int)roundf(ValueToRoundNegative); //Output: -6 

NSLog(@"roundf(%f) = %d", ValueToRoundNegative, RoundedValueNegative); 

Читать документ здесь для получения дополнительной информации:

http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/roundf.3.html

0
NSString *value = @"1.23456"; 
    float floatvalue = value.floatValue; 
    int rounded = roundf(floatvalue); 
    NSLog(@"%d",rounded); 

если вы что круглые с большим значением, пожалуйста, используйте ceil(floatvalue)

если вы что раунд с меньшим значением, пожалуйста, используйте floor(floatvalue)

0

Вы можете округлять десятичные значения с помощью NSNumberFormatter Есть несколько примеров, вы можете пройти через:

NSNumberFormatter *format = [[NSNumberFormatter alloc] init]; 
    [format setPositiveFormat:@"0.##"]; 
    NSLog(@"%@", [format stringFromNumber:[NSNumber numberWithFloat:25.342]]); 
    NSLog(@"%@", [format stringFromNumber:[NSNumber numberWithFloat:25.3]]); 
    NSLog(@"%@", [format stringFromNumber:[NSNumber numberWithFloat:25.0]]); 

Соответствующие результаты:

2010-08-22 15:04:10.614 a.out[6954:903] 25.34 
2010-08-22 15:04:10.616 a.out[6954:903] 25.3 
2010-08-22 15:04:10.617 a.out[6954:903] 25 
0
NSString* str = @"2.61111111"; 
double value = [str doubleValue]; 

2.5 -> 3: int num = value+0.5; 
2.6 -> 3: int num = value+0.4; 

Установить как ваши потребности:

double factor = 0.4 
if (value < 0) value *= -1; 
int num = value+factor; 

NSLog(@"%d",num); 
Смежные вопросы