[英]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.