我正在尝试使用简单的格式创建NSDecimalNumber:123.00后面有两个小数位,总是。我尝试使用NSFormatter和许多其他方法,如从字符串转换浮动,然后从此字符串创建NSDecimalNumber,但它不起作用。 问题是我只需要这种格式的NSDecimalNumber,而不是NSString或任何其他格式。 谢谢你的建议, 保罗
答案 0 :(得分:0)
你可以从中得到这个想法。
float num = 123.1254546;
NSString *str = [NSString stringWithFormat:@"%.2f",num];
NSLog(@"%.2f %@",num,str);
答案 1 :(得分:0)
我认为您只需要进行两次类型转换操作,如下所示
float value = 123.562;
int myDigit = value;
它在myDigit变量中给出值123
NSLog(@"MyDigit in Decimal = %d",myDigit);
输出为十进制的MyDigit = 123
现在如果你想输出像123.000那么只需写下来
float valueWithZiro = myDigit;
NSLog(@"MyDigit with 000 == %3f",valueWithZiro);
输出为十进制的MyDigit = 123.000
答案 2 :(得分:0)
NSDecimalNumber与NSNumber一样,不能包含格式信息。对象结构根本不支持它。它代表一个数字,而不是数字的显示方式。
您可以将其转换为格式化的NSString(您说您不想要)。但是你不能做你所要求的。
使用NSNumberFormatter将其转换为格式化的NSString。它的对象允许您指定小数和千位分隔符,要显示的小数位数,货币符号等。
答案 3 :(得分:0)
也许你希望存储一个NSNumberDecimal只有两位数后?
如果是这样NSDecimalNumberBehaviors
是你的朋友。
我有类似的需求并使用以下内容:
self.decimalHandlingBehaviorForApp = [NSDecimalNumberHandler
decimalNumberHandlerWithRoundingMode:NSRoundUp
scale:2 raiseOnExactness:NO
raiseOnOverflow:NO raiseOnUnderflow:NO
raiseOnDivideByZero:YES];
编辑:添加了使用它的示例
// update the taxable total first
self.cartTaxableTotal = [self.cartTaxableTotal decimalNumberByAdding:itemAdded.priceOfItem
withBehavior:self.decimalHandlingBehaviorForApp];