模拟器和IRL iPhone没有相同的行为

模拟器和IRL iPhone没有相同的行为,iphone,objective-c,xcode,simulator,Iphone,Objective C,Xcode,Simulator,因此,我的转换器应用程序终于开始工作了,但有一个主要问题。它不适用于IRL iPhone,只适用于模拟器iPhone。 像这样(IRL iPhone): 模拟手机的功能与此相同: IDK为什么这个要小得多 我能找到的唯一区别是我的手机是挪威语的,所以键盘上有一个逗号',而不是句号' 计算它的代码在这里 TLDR irl iphone没有做正确的事情,但xcode模拟器做了 我能找到的唯一区别是我的手机是挪威语的,所以键盘上有一个逗号',而不是句号' 这就是答案。由于您有不同的区域设置,第一个

因此,我的转换器应用程序终于开始工作了,但有一个主要问题。它不适用于IRL iPhone,只适用于模拟器iPhone。 像这样(IRL iPhone):

模拟手机的功能与此相同:

IDK为什么这个要小得多

我能找到的唯一区别是我的手机是挪威语的,所以键盘上有一个逗号',而不是句号'

计算它的代码在这里

TLDR irl iphone没有做正确的事情,但xcode模拟器做了

我能找到的唯一区别是我的手机是挪威语的,所以键盘上有一个逗号',而不是句号'

这就是答案。由于您有不同的区域设置,第一个区域设置将四舍五入为13,而不是13.37。我不知道你用的是什么量,但在这两种情况下,你似乎都在乘以常数133.4247,所以这两种情况下的计算都是一样的

问题在于从字符串读取值时没有使用
NSNumberFormatter
NSNumberFormatter
将为您处理语言环境。使用
[NSString floatValue]
将字符串转换为数字是一种非常粗糙的方法,您无法控制区域设置转换

在这一行

float input = [inputText.text floatValue];
我建议换成

NSNumberFormatter* fmt = [NSNumberFormatter new];
float input [fmt numberFromString:inputText.text].floatValue;

好啊我该如何解决这个问题?比如,让键盘放松——所有设备上都只有一个英文键盘。编辑:是的,但是你可以看到答案有0.5的差异,这太不精确了。我需要两者完全相同。“NSNubPerformatter”没有可见的@interface声明选择器“localizedStringFromNumber:”错误。修复?方法是
[NSNumberFormatter localizedStringFromNumber:numberStyle:
,例如[NSNumberFormatter localizedStringFromNumber:@“31415”numberStyle:NSNumberFormatterDecimalStyle];这似乎很复杂。真的没有办法告诉键盘本身,在所有语言中都要学会如何使用句点而不是逗号吗?我不认为这会增加复杂性。我猜,更改键盘的数字格式会复杂得多。