gpt4 book ai didi

iphone - UIKeyboardTypeDecimalPad - 将逗号更改为点

转载 作者:行者123 更新时间:2023-12-03 19:29:35 24 4
gpt4 key购买 nike

我使用此方法来显示带有小数点分隔符的键盘

myTextField.keyboardType=UIKeyboardTypeDecimalPad;

如何将逗号更改为点分隔符?

我有芬兰语言环境。使用逗号时,小数在我的应用程序上不起作用。

-(IBAction)calculate {
float x = ([paino.text floatValue]) / ([pituus.text floatValue]) *10000;
label.text = [[NSString alloc] initWithFormat:@"%0.02f", x];
}

最佳答案

好的,您可以使用数字键盘(取决于当前区域设置)编辑文本字段,从而获得数字的文本表示形式(也取决于当前区域设置)。编辑完成后,您阅读它并希望将其转换为数字。

要进行转换,您可以使用 NSNumberFormatter,如下所示:

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];

您可以按照自己的意愿设置格式化程序,设置区域设置(!)、限制、格式、小数/分组分隔符、小数位数等。然后您只需使用它即可:

float number = [nf numberFromString: field.text];

仅此而已!现在,即使文本包含逗号,只要您让键盘和格式化程序具有相同的格式、相同的样式,即可能只是让当前的语言环境在整个地方使用,您就拥有了数字。

编辑

这是一个货币格式化程序,可以在货币的字符串和数字之间进行转换:

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle: NSNumberFormatterCurrencyStyle];
[nf setRoundingMode: NSNumberFormatterRoundHalfUp];
[nf setMaximumFractionDigits: 2]

这是一个具有 4 位小数的百分比格式化程序:

NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setNumberStyle: NSNumberFormatterPercentStyle];
[nf setRoundingMode: NSNumberFormatterRoundHalfUp];
[nf setMaximumFractionDigits: 4];

两者都在当前语言环境中。

如您所见,您可以定义样式、数字、舍入行为等等,具体取决于您尝试输入的数字。有关更多详细信息(您可以使用 NSNumberFormatter 做很多事情),您应该阅读 Apple 文档,它超出了 SO 答案的范围来描述这一切。

就您而言,假设 paino 和 pituus 也是 UITextFields:

-(IBAction)calculate {
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setRoundingMode: NSNumberFormatterRoundHalfUp];
[nf setMaximumFractionDigits: 2];

float npaino = [[nf numberFromString: paino.text] floatValue];
float npituus = [[nf numberFromString: pituus.text] floatValue];

float x = npaino] / npituus *10000;
label.text = [nf stringFromNumber: [NSNumber numberWithFloat: x]];

[nf release];
}

现在,为了避免在每次计算中创建格式化程序,您可以将其设为实例变量,因为这些转换只需要一个实例变量。

关于iphone - UIKeyboardTypeDecimalPad - 将逗号更改为点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5959917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com