在我的应用程序中我有一个文本字段,当我点击该文本字段时,数字小键盘将打开。现在我的问题是如何在键入时以十进制格式转换该值,因为我必须只插入十进制值并在数字小键盘没有给出点(。)。当用户在文本字段中输入时,它会自动将该值转换为十进制格式。
假设用户输入 5078 ,则在输入时会显示 50.78 格式。
答案 0 :(得分:7)
您可以简单地将数字乘以“ 0.01 ”(两位小数)并使用字符串格式“%。2lf ”。在 textField:shouldChangeCharactersInRange:withString:
方法中编写以下代码。
NSString *text = [textField.text stringByReplacingCharactersInRange:range withString:string];
text = [text stringByReplacingOccurrencesOfString:@"." withString:@""];
double number = [text intValue] * 0.01;
textField.text = [NSString stringWithFormat:@"%.2lf", number];
return NO;
答案 1 :(得分:3)
试试这个。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string {
double currentValue = [textField.text doubleValue];
double cents = round(currentValue * 100.0f);
if ([string length]) {
for (size_t i = 0; i < [string length]; i++) {
unichar c = [string characterAtIndex:i];
if (isnumber(c)) {
cents *= 10;
cents += c - '0';
}
}
} else {
// back Space
cents = floor(cents / 10);
}
textField.text = [NSString stringWithFormat:@"%.2f", cents / 100.0f];
if(cents==0)
{
textField.text=@"";
return YES;
}
return NO;
}
答案 2 :(得分:0)
谢谢userar,它对我来说很好。在我的情况下,我需要在完成编辑时将十进制格式化为货币本地化格式。
- (BOOL) textFieldShouldEndEditing:(UITextField *)textField {
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
// im my case i need specify the currency code,
// but could have got it from the system.
formatter.currencyCode = @"BRL";
NSDecimalNumber *decimalNumber =
[NSDecimalNumber decimalNumberWithString:textField.text];
// keeping the decimal value for submit to server.
self.decimalValue = decimalNumber;
// formatting to currency string.
NSString * currencyString = [formatter stringFromNumber:decimalNumber];
textField.text = currencyString;
}