如何将此值转换为绝对值?

时间:2016-09-07 10:20:29

标签: ios objective-c absolute-value

我从webservice获得这个 " rateavg":" 2.6111"

现在我收到了一个字符串。 怎么做,如果它来了2.6它将显示3,如果它将来2.4或2.5它将显示2?

如何得到这个我没有得到。请帮帮我

9 个答案:

答案 0 :(得分:2)

试试这个

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

希望这有帮助。

答案 1 :(得分: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);

所以使用ceilfloor方法就是一种情况。

编辑:因为你想要所有双打:

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);

答案 2 :(得分:1)

使用此

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

更新

   NSString *a =@"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);

答案 3 :(得分:1)

检查这个

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

答案 4 :(得分:1)

尝试以下代码我已对其进行了测试,并为每个数字工作,

 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

答案 5 :(得分:0)

要将值舍入为最接近的整数,请使用roundf()的{​​{1}}函数。

首先导入math

math.h

实施例,

#import "math.h"

在此处阅读doc以获取更多信息:

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

答案 6 :(得分:0)

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

如果您更有价值的回合请使用ceil(floatvalue)

如果你的价值较低的回合请使用floor(floatvalue)

答案 7 :(得分: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

答案 8 :(得分: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);