[英]Objective C : Get correct float values(justified)
我做了很多工作,却找不到解决方案。 甚至标题也无法清楚解释。
我有三个值,重量,数量和总计
我做了以下
float wq = [[weightarray objectAtIndex:selectedint]floatValue];
float q = [quantity floatValue];
float total = wq * q;
例如,如果
[weightarray objectAtIndex:selectedint] = @"3.14";
quantity = 4;
那么结果是
wq = 3.140000 q= 4.000000 total = 12.560000
但是我需要
wq = 3.14 total = 12.56
该怎么办? 我搜索了很多,有人建议使用NSDecimal,
NSDecimalNumberHandler *roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:2 raiseOnExactness:FALSE raiseOnOverflow:TRUE raiseOnUnderflow:TRUE raiseOnDivideByZero:TRUE];
但此处的小数位数不是2,因此wq值在点后可能有3或4个数字。
如果总数= 2.30000100表示我需要总数= 2.300001怎么解决?
我不确定您要的是什么,但似乎您只希望这些值仅显示2 dp,在这种情况下,您可以使用如下字符串格式:
NSString *output = [NSString stringWithFormat:@"float = %.2f", 3.14];
.2指定浮点数应调整为2 dp
希望这可以帮助
可能有更直接的方法来实现它(我不知道),但这是一个建议...
[myString hasSuffix:@"0"]
查看它是否以零结尾。 [myString substringToindex:[myString length]-1]
创建一个没有最后零的新字符串。 我知道这并不优雅,但是除非有人有更好的解决方案,否则这至少会做您想要的。
更新:从头开始-我刚刚发现了[myString stringByTrimmingCharactersInSet:set]
。 当然这必须是您所需要的...?
终于找到了解决方案,多亏了马丁
float total = 12.56000;
NSString *s = [NSString stringWithFormat:@"%f", total];
NSLog(@"%@",s);
BOOL success;
success =NO;
while(!success)
{
if ([s hasSuffix:@"0"])
{
s = [s substringWithRange:NSMakeRange(0,[s length]-1)];
}
else if ([s hasSuffix:@"."])
{
s = [s substringWithRange:NSMakeRange(0,[s length]-1)];
success = YES;
}
else
success = YES;
}
NSLog(@"%@",s);
如果total = 12.560000,则返回total = 12.56
如果total = 12.000000,则返回total = 12
如果total = 10.000000,则返回total = 10
如果total = 12.3000100,则返回total = 12.30001
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.