计算中的小数点为.要么 ,

Lar*_*s - 1 cocoa-touch numbers decimal objective-c ios

如果我使用十进制数字输入数字,则十进制根据国家和地区格式而变化.
可以作为一个点"." 或者作为逗号","
我无法控制使用该应用的设备.
如果区域格式使用逗号,则计算出错.投入5,6与仅投入5次和56次相同.
即使我以编程方式允许两者兼而有之.并且,作为TextField中的输入.
如何在不使用数字和标点符号的情况下解决这个问题,并且可能还必须给出指令以避免使用逗号输入","
它只是输入我需要的数字和小数,并且十进制键盘更好.

Vik*_*ica 9

您可以为此使用NSNumberFormatter,因为可以将其设置为处理不同的语言环境.

创建格式化程序:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setLocale:[NSLocale currentLocale]];
Run Code Online (Sandbox Code Playgroud)

用它:

NSNumber *number = [numberFormatter numberFromString: string]; //string is the textfield.text
Run Code Online (Sandbox Code Playgroud)

如果设备的语言环境设置为语言环境,其中,数字键盘中的小数分隔符将使用和格式化程序一样好.在那些分组分隔符将是.

对于其他语言环境,反之亦然.

NSNumberFormatter非常复杂,您也应该阅读" 数据格式化指南"中的章节.如果你的应用确实处理了这种情况,它也知道很多货币处理(显示,而不是转换).