我正在尝试使用简单的格式创建 NSDecimalNumber,例如:123.00,点后有两个小数位,总是。我尝试使用 NSFormatter 和许多其他方法,例如从字符串转换浮点数,然后从该字符串创建 NSDecimalNumber,但它不起作用。问题是我只需要这种格式的 NSDecimalNumber,而不需要 NSString 或任何其他格式。谢谢你的建议,保罗
问问题
593 次
4 回答
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];
于 2014-07-26T00:35:54.343 回答
0
NSDecimalNumber 和 NSNumber 一样,不能包含格式信息。对象结构根本不支持它。它代表一个数字,而不是数字的显示方式。
您可以将其转换为格式化的 NSString (您说您不想要)。但你不能做你所要求的。
您可以使用 NSNumberFormatter 将其转换为格式化的 NSString。它是允许您指定小数和千位分隔符、要显示的小数位数、货币符号等的对象。
于 2014-05-14T21:01:27.123 回答
0
你可能会从中得到想法。
float num = 123.1254546;
NSString *str = [NSString stringWithFormat:@"%.2f",num];
NSLog(@"%.2f %@",num,str);
于 2012-11-24T11:27:54.400 回答
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
于 2012-11-24T11:37:21.603 回答