0

このような質問が他にもあったことは承知していますが、私の問題は正確に関連していないようです. これが取引です。

私は計算を行うアプリを持っています。これにはフロートを使用しています。すべてのフロートは正常に機能し、フロート値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。私は何を間違っていますか?

ありがとう

4

1 に答える 1

0

どうでも。NSNumberFormatter を初期化する必要がありました。#失敗の瞬間。

NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc]init]; 

問題を解決しました。:)

于 2013-01-08T21:22:02.183 に答える