在我的应用程序中,我有一个文本字段,当我点击该文本字段时,数字键盘将打开。现在我的问题是如何在打字时将该值转换为十进制格式,因为我必须只插入十进制值并在数字键盘中点(。)没有给出,所以当用户输入文本字段时,它会自动将该值转换为十进制格式。如何在输入时将文本字段格式设置为小数?
想,如果用户类型它会显示50.78格式,而打字。
在我的应用程序中,我有一个文本字段,当我点击该文本字段时,数字键盘将打开。现在我的问题是如何在打字时将该值转换为十进制格式,因为我必须只插入十进制值并在数字键盘中点(。)没有给出,所以当用户输入文本字段时,它会自动将该值转换为十进制格式。如何在输入时将文本字段格式设置为小数?
想,如果用户类型它会显示50.78格式,而打字。
您可以简单地通过 “0.01” 乘数(小数点后两位),并使用字符串格式 “%.2lf”。在textField:shouldChangeCharactersInRange:withString:
方法中写下面的代码。
谢谢你工作正常。 – Developer
欢迎您! – EmptyStack
试试这个。
-(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)
{
[email protected]"";
return YES;
}
return NO;
}
这就解决了这个问题。但是你仍然可以通过简单的乘法和字符串格式来实现! – EmptyStack
是的...但这是另一种选择.... – 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;
}
是小数点位置固定,这将一些数字 – Gypsa
之前或之后来,如果是5或50或5000078将hapeen什么。 – Gypsa
如果他只是输入'8'或'78',该怎么办? – EmptyStack