2

というわけで、私のコンバーター アプリはついに機能しましたが、大きな問題が 1 つあります。IRL iPhone では機能せず、シミュレーター iPhone だけです。このように (IRL iPhone):

IRL Iphone

シミュレータ電話は、次のように同じことを行います。 シミュレータ iPhone

IDK なぜこれがこんなに小さいのか。

私が見つけることができる唯一の違いは、私の電話がノルウェー語であるため、そこのキーボードにはピリオド「.」ではなくコンマ「,」があることです。

それを計算するもののコードはここにありますhttp://pastebin.com/nGaw7Agj

TLDR irl iphone は正しいことをしませんが、xcode シミュレーターは正しいことをします。

4

1 に答える 1

3

私が見つけることができる唯一の違いは、私の電話がノルウェー語であるため、そこのキーボードにはピリオド「.」ではなくコンマ「,」があることです。

それが答えです。ロケールが異なるため、最初のロケールは 13.37 ではなく 13 に丸められます。ここでどのような量を扱っているかはわかりませんが、どちらの場合も定数 ~133.4247 を掛けているように見えるため、どちらの場合も計算は同じです。

問題はNSNumberFormatter、文字列から値を読み取るときに使用していないことです。NSNumberFormatterロケールを処理します。を使用[NSString floatValue]するのは、文字列を数値に変換する非常に大雑把な方法であり、ロケール変換を制御することはできません。

この行で

float input = [inputText.text floatValue];

に変更することをお勧めします

NSNumberFormatter* fmt = [NSNumberFormatter new];
float input [fmt numberFromString:inputText.text].floatValue;
于 2012-10-23T16:55:54.090 に答える