我在其中工作了很多,无法找到解决方案。即使标题也无法解释清楚。
我有三个值重量,数量和总数
我做了以下
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 怎么解决这个?
答案 0 :(得分:3)
我不完全确定你的要求是什么,但好像你希望这些值只显示2 d.p.在这种情况下,您可以使用如下字符串格式:
NSString *output = [NSString stringWithFormat:@"float = %.2f", 3.14];
.2指定浮点数应合理为2 d.p。
希望这有帮助
答案 1 :(得分:2)
可能有一种更直接的方式来实现它(我不知道),但这是一个建议......
[myString hasSuffix:@"0"]
查看它是否以零结尾。[myString substringToindex:[myString length]-1]
创建一个没有最终零的新字符串。我知道它并不优雅,但除非有人有更好的解决方案,否则这至少会做你想要的。
更新:从头开始 - 我刚发现[myString stringByTrimmingCharactersInSet:set]
。当然这一定是你需要的......?
答案 2 :(得分:0)
最后找到了解决方案,感谢Martin
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);
如果总计= 12.560000,则返回总计= 12.56
如果总计= 12.000000则返回总计= 12
如果总计= 10.000000则返回总数= 10
如果总计= 12.3000100则返回总计= 12.30001