idz*_*idz 66
你可能想要这样的东西(假设货币是浮动的):
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:currency]];
Run Code Online (Sandbox Code Playgroud)
根据您的要求将52视为.52,您可能需要除以100.0.
这种方法的好处是它将尊重当前的语言环境.因此,在适当的情况下,它会将您的示例格式化为"5.212,42".
更新:
在发布我的例子时,我或许有点快.正如下面Conrad Shultz所指出的,在处理货币金额时,最好将数量存储为NSDecimalNumbers.这将极大地减少带有舍入误差的麻烦.如果你这样做,上面的代码片段变为(假设货币是a NSDecimalNumber*):
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSString *numberAsString = [numberFormatter stringFromNumber:currency];
Run Code Online (Sandbox Code Playgroud)
AAV*_*AAV 12
我用这个代码.这对我有用
1)将UITextField Delegate添加到头文件
2)添加此代码(启用ARC)
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *cleanCentString = [[textField.text
componentsSeparatedByCharactersInSet:
[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]
componentsJoinedByString:@""];
// Parse final integer value
NSInteger centAmount = cleanCentString.integerValue;
// Check the user input
if (string.length > 0)
{
// Digit added
centAmount = centAmount * 10 + string.integerValue;
}
else
{
// Digit deleted
centAmount = centAmount / 10;
}
// Update call amount value
NSNumber *amount = [[NSNumber alloc] initWithFloat:(float)centAmount / 100.0f];
// Write amount with currency symbols to the textfield
NSNumberFormatter *_currencyFormatter = [[NSNumberFormatter alloc] init];
[_currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[_currencyFormatter setCurrencyCode:@"USD"];
[_currencyFormatter setNegativeFormat:@"-¤#,##0.00"];
textField.text = [_currencyFormatter stringFromNumber:amount];
return NO; }
Run Code Online (Sandbox Code Playgroud)
swift 2.0版本:
let _currencyFormatter : NSNumberFormatter = NSNumberFormatter()
_currencyFormatter.numberStyle = NSNumberFormatterStyle.CurrencyStyle
_currencyFormatter.currencyCode = "EUR"
textField.text = _currencyFormatter.stringFromNumber(amount);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44214 次 |
| 最近记录: |