このような質問が他にもあったことは承知していますが、私の問題は正確に関連していないようです. これが取引です。
私は計算を行うアプリを持っています。これにはフロートを使用しています。すべてのフロートは正常に機能し、フロート値NSNumber
を書式設定用に変換します。
NSNumberFormatter *numFormatter = [NSNumberFormatter alloc];
[numFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numFormatter setMinimumFractionDigits:1];
[numFormatter setMaximumFractionDigits:5];
NSNumber *insulinRatio = [NSNumber numberWithFloat:insulinRatioCalc];
NSLog(@"Original Number = %@", insulinRatio);
私NSNumber
のinsulinRatioは正確な精度を持っています。NSString
ただし、これを withに変換するとNSNumberFormatter
、10 進数の精度がすべて失われます。
NSString *numberAsString = [numFormatter stringFromNumber:insulinRatio];
NSLog(@"Number = %@", numberAsString);
これらの最後のログの出力は次のとおりです。
2013-01-08 16:12:27.944 MyApp[84062:c07] 元の番号 = 1.2 2013-01-08 16:12:27.944 MyApp[84062:c07] 番号 = 1
なぜ私はこの精度を失っているのですか?NSNumber
が double に変換されることはわかっていますが、NSNumber
ここでは問題ありません。ですNSNumberFormatter
。私は何を間違っていますか?
ありがとう