NSDecimalNumber小数点后面的零(iPhone SDK)

5
我有以下的代码
(...)
numberStyle = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain
                                                                     scale:2
                                                          raiseOnExactness:NO
                                                           raiseOnOverflow:NO
                                                          raiseOnUnderflow:NO
                                                       raiseOnDivideByZero:NO];

strThree = textFieldThree.text;
strThree = [strThree stringByReplacingOccurrencesOfString:@"." withString:@""];

fieldOneDNa = (NSDecimalNumber *)[NSDecimalNumber decimalNumberWithString:strThree];
oneHundred = (NSDecimalNumber *)[NSDecimalNumber decimalNumberWithString:@"100"];
fieldOneDN = [fieldOneDNa decimalNumberByDividingBy:oneHundred
                                       withBehavior:numberStyle];

firstStepReturn = [fieldOneDN stringValue];
textFieldThree.text = firstStepReturn;
(...)

我希望能够让firstStepReturn保留两位小数,即使它们是.00或.*0。例如,如果将323.390输入到文本字段“textFieldThree”中,它将被处理并返回到文本字段中为3233.90。目前,它显示为3233.9。
非常感谢您的帮助。
2个回答

18

NSDecimalNumber是NSNumber的子类,因此您只需要使用NSNumberFormatter即可。


 NSDecimalNumber * dn = [NSDecimalNumber decimalNumberWithString:@"1234.5"];
 NSNumberFormatter * nf = [[NSNumberFormatter alloc] init];
 [nf setMinimumFractionDigits:2];
 [nf setMaximumFractionDigits:2];
 NSString *ns  = [nf stringFromNumber:dn];

简单易懂


这是关于编程的内容,请将以下文本翻译成中文:这里还有帮助 https://dev59.com/63RA5IYBdhLWcg3w0xjk - Andiih

4

为什么不使用 textFieldThree.text=[NSString stringWithFormat:@"%.2f",[fieldOneDN floatValue]];

(或类似的内容 - 对不起,我现在正在使用PC,无法测试这个)


1
谢谢,但我试图避免使用浮点数,因为在使用大数字时不准确。你有其他建议吗? - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接