1

我正在尝试使用简单的格式创建 NSDecimalNumber,例如:123.00,点后有两个小数位,总是。我尝试使用 NSFormatter 和许多其他方法,例如从字符串转换浮点数,然后从该字符串创建 NSDecimalNumber,但它不起作用。问题是我只需要这种格式的 NSDecimalNumber,而不需要 NSString 或任何其他格式。谢谢你的建议,保罗

4

4 回答 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 回答