0

好的,所以我正在尝试使用 IBAction 将我的值四舍五入到最接近的整数。

So 1.88 -> 2.00 ,  
11.40 -> 12.00 ,   
111.01 -> 112.00, etc.    

-

-(IBAction)roundUp:(id)sender   
{   
    float floatRoundValue=lblTotalRound.text floatValue];
    ceilf(floatRoundValue);
    NSString *stringRoundValue = [NSString stringWithFormat:@"%1.0f", floatRoundValue];
    lblTotalRound.text=stringRoundValue;
}

这就是我得到的。但它仍然四舍五入低于 0.5 和最接近的整数

(Ex. 1.19 -> 1 , i need 1.19 -> 2.00). 

我试过 %1.2f 但值根本没有改变。

我究竟做错了什么?

4

3 回答 3

2

ceilf不会修改您传入的值。它返回修改后的值。

floatRoundValue = ceilf(floatRoundValue);
于 2012-06-02T21:44:01.327 回答
1

ceilf 是一个返回值的函数 (https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man3/ceil.3.html),您只需将该行更改为下列的。

floatRoundValue = ceilf(floatRoundValue);

因此,在您的情况下,完整的代码将是这样的。

-(IBAction)roundUp:(id)sender   
{   
    float floatRoundValue=lblTotalRound.text floatValue];
    floatRoundValue = ceilf(floatRoundValue);
    NSString *stringRoundValue = [NSString stringWithFormat:@"%1.0f", floatRoundValue];
    lblTotalRound.text=stringRoundValue;
}
于 2012-06-02T21:47:56.877 回答
1

如果您需要在之前有一个 $ 符号:

-(IBAction)roundUp:(id)sender   
{   
    float floatRoundValue=(lblTotalRound.text floatValue]; 
    floatRoundValue = ceilf(floatRoundValue);
    NSString *stringRoundValue = [NSString stringWithFormat:@"$%1.0f", floatRoundValue];
    lblTotalRound.text=stringRoundValue;
}

NSString 类参考

于 2012-06-02T22:50:50.390 回答