アプリケーションのユーザーから数値入力を受け取るUITextFieldがあります。次に、このテキストフィールドの値は、shouldChangeCharactersInRangeデリゲートメソッド内でNSNumberFormatterを使用して通貨形式に変換されます。「12345678」という数字を入力すると、その数字は$ 123456.78に正しく変換されます(数字は一度に1桁ずつ入力され、この時点まではすべてがスムーズに機能します)。ただし、この後に別の数字(9など)を入力すると、「1234567.89」ではなく「1234567.88」という数字が表示されます。その後に別の数字を入力すると、この後はまったく異なる数字になります(アプリケーションの数字キーパッドを使用して数字を入力しています。次のコードがあります。
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
modifiedValue = [formatter stringFromNumber:[NSNumber numberWithFloat:[modifiedValue floatValue]]];
textField.text = modifiedValue;
この異常な変換を引き起こす行は次のとおりです。
modifiedValue = [formatter stringFromNumber:[NSNumber numberWithFloat:[modifiedValue floatValue]]];
なぜこれなのか誰にも分かりますか?