数値をフォーマットするときにNSStringクラスが一貫性のない丸めをするのはなぜですか?

アリョーシャク

次の2行の出力は、NSStringのstringWithFormatステートメントが一貫して数値を丸めていないことを示しているようです。0.75から0.8に正しく切り上げられているようです。ただし、0.25は0.2に切り捨てられます。これがコードです。

    NSString *sRoundedScore = [NSString stringWithFormat:@"%.1f", fScore];
    NSLog(@"\r\n score before rounding: %f, rounded score: %@", fScore, sRoundedScore);

fScoreが0.25に割り当てられている場合、出力は次のようになります。

score before rounding: 0.250000, rounded score: 0.2

fScoreが0.75に割り当てられている場合、出力は次のようになります。

score before rounding: 0.750000, rounded score: 0.8

これを一貫して切り上げるには、NSNumberFormatterの使用を開始する必要がありました。stringWithFormatが結果にこのバリエーションを生成するのはなぜですか?

ベンコフマン

この答えは「printf」機能に戻ります

バンカーの丸め:

これは、浮動小数点整数の小数点以下1桁を表示することをより明確に示していることを知っておくことが重要です。

小数点以下1桁を指定しているので、小数点以下2桁を調べて、四捨五入する場所を決定します。%.f format'erの丸めロジックは、次のように機能します。直前の数値が4未満の場合、5が切り捨てられ、直前の数値が4で、5を超える場合は切り上げられます。

この理由:http//linuxgazette.net/144/misc/lg/a_question_of_rounding_in_issue_143.html: "GNU Cライブラリの場合、printf()で使用される丸め規則は「バンカー丸め」または「偶数に丸める」です。これC99仕様では、10進数への変換では、現在選択されているIEEE丸めモード(デフォルトのバンカー丸め)を使用する必要があると規定されているため、他のCライブラリよりも正確です。」

この回答から見つかりました:doubleのprintf丸め動作

上記の一般的な丸めラウンドをインラインで実行する場合は、c関数round()を少し計算して使用するか、前述のようにNSNumberFormatter使用するだけです。

Objective-Cの数値の丸め

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

異なるプラットフォームでstringstreamから数値を解析するときの一貫性のない動作

分類Dev

等幅フォントを使用しているときに、ImageFont.getsize()が文字の測定に一貫性がないのはなぜですか?

分類Dev

Python 3の数値フォーマットを使用して、数値を数百、数千などに丸めることができます

分類Dev

DecimalFormatの丸めに一貫性がないのはなぜですか?

分類Dev

DecimalFormatの丸めに一貫性がないのはなぜですか?

分類Dev

フレームレートを2倍にすると、一貫性のないフレームが生成されるのはなぜですか?

分類Dev

json_encodeを使用するときにPHPが数値を丸めるのはなぜですか?

分類Dev

値に割り当てるときの動作に一貫性がないのはなぜですか?

分類Dev

オブジェクトを直接インスタンス化するときではなく、ポインタを使用するときにクラスメンバーのデフォルト値が使用されないのはなぜですか?

分類Dev

UIButtonの角を丸めるときに、粗い黒いエッジがあるのはなぜですか?

分類Dev

一貫性のないPHP丸めを処理する方法は?

分類Dev

ReactiveContentPageを使用しているときに「一貫性のないアクセシビリティ」の問題が発生するのはなぜですか?

分類Dev

VBAの「フォーマット」関数が一貫性のない戻り値を返す-

分類Dev

反復中にアイテムをマップに追加すると、一貫性のない結果が生成されるのはなぜですか?

分類Dev

数式バーの内側をクリックするまで条件付きフォーマットが使用されないのはなぜですか?

分類Dev

一貫性のないデータを解析するときにヘッダー行を「発見」するための最良の方法は何ですか?

分類Dev

クラスローダーとクラスローダーのファイルをロードする結果に一貫性がないのはなぜですか

分類Dev

クラスからvarを設定解除すると、結果に一貫性がなくなるのはなぜですか

分類Dev

構造を比較するときに、このアサートがフォーマット例外をスローするのはなぜですか?

分類Dev

ポインターを印刷するときにfmt.Printlnが一貫しないのはなぜですか?

分類Dev

postgresqlテーブルを作成するときに「複数のデフォルト値」エラーが発生するのはなぜですか?

分類Dev

reduceで減算を使用すると結果に一貫性がないのはなぜですか?

分類Dev

パブリックフィールドへの同時アクセス。なぜ一貫性のない状態を観察できるのですか?

分類Dev

完全に等しいのではなく、各文字をビットマスクと一致させることができる `memchr`と同様のパフォーマンスを持つ関数はありますか?

分類Dev

dimenリソースに一貫性がないのはなぜですか、また正しい値を取得する方法は?

分類Dev

「strategy.entry()」で「strategy()」のデフォルト値とは異なる値を使用すると、順序単位に一貫性がなくなります。

分類Dev

デフォルトのパラメータ値を追加すると、引数を変更するときの動作が変わるのはなぜですか?

分類Dev

なぜgitが「最適なパフォーマンスのためにバックグラウンドでリポジトリを自動パッキングする」というメッセージを表示し続けるのですか?

分類Dev

配列スロットに値を配置するときに「クラスが予期される」エラーが発生するのはなぜですか?

Related 関連記事

  1. 1

    異なるプラットフォームでstringstreamから数値を解析するときの一貫性のない動作

  2. 2

    等幅フォントを使用しているときに、ImageFont.getsize()が文字の測定に一貫性がないのはなぜですか?

  3. 3

    Python 3の数値フォーマットを使用して、数値を数百、数千などに丸めることができます

  4. 4

    DecimalFormatの丸めに一貫性がないのはなぜですか?

  5. 5

    DecimalFormatの丸めに一貫性がないのはなぜですか?

  6. 6

    フレームレートを2倍にすると、一貫性のないフレームが生成されるのはなぜですか?

  7. 7

    json_encodeを使用するときにPHPが数値を丸めるのはなぜですか?

  8. 8

    値に割り当てるときの動作に一貫性がないのはなぜですか?

  9. 9

    オブジェクトを直接インスタンス化するときではなく、ポインタを使用するときにクラスメンバーのデフォルト値が使用されないのはなぜですか?

  10. 10

    UIButtonの角を丸めるときに、粗い黒いエッジがあるのはなぜですか?

  11. 11

    一貫性のないPHP丸めを処理する方法は?

  12. 12

    ReactiveContentPageを使用しているときに「一貫性のないアクセシビリティ」の問題が発生するのはなぜですか?

  13. 13

    VBAの「フォーマット」関数が一貫性のない戻り値を返す-

  14. 14

    反復中にアイテムをマップに追加すると、一貫性のない結果が生成されるのはなぜですか?

  15. 15

    数式バーの内側をクリックするまで条件付きフォーマットが使用されないのはなぜですか?

  16. 16

    一貫性のないデータを解析するときにヘッダー行を「発見」するための最良の方法は何ですか?

  17. 17

    クラスローダーとクラスローダーのファイルをロードする結果に一貫性がないのはなぜですか

  18. 18

    クラスからvarを設定解除すると、結果に一貫性がなくなるのはなぜですか

  19. 19

    構造を比較するときに、このアサートがフォーマット例外をスローするのはなぜですか?

  20. 20

    ポインターを印刷するときにfmt.Printlnが一貫しないのはなぜですか?

  21. 21

    postgresqlテーブルを作成するときに「複数のデフォルト値」エラーが発生するのはなぜですか?

  22. 22

    reduceで減算を使用すると結果に一貫性がないのはなぜですか?

  23. 23

    パブリックフィールドへの同時アクセス。なぜ一貫性のない状態を観察できるのですか?

  24. 24

    完全に等しいのではなく、各文字をビットマスクと一致させることができる `memchr`と同様のパフォーマンスを持つ関数はありますか?

  25. 25

    dimenリソースに一貫性がないのはなぜですか、また正しい値を取得する方法は?

  26. 26

    「strategy.entry()」で「strategy()」のデフォルト値とは異なる値を使用すると、順序単位に一貫性がなくなります。

  27. 27

    デフォルトのパラメータ値を追加すると、引数を変更するときの動作が変わるのはなぜですか?

  28. 28

    なぜgitが「最適なパフォーマンスのためにバックグラウンドでリポジトリを自動パッキングする」というメッセージを表示し続けるのですか?

  29. 29

    配列スロットに値を配置するときに「クラスが予期される」エラーが発生するのはなぜですか?

ホットタグ

アーカイブ