C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.84097 の関連記事表示

<< 0 >>
■84097  Re[12]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ 魔界の仮面弁士 -(2017/05/15(Mon) 19:44:15)
    2017/05/15(Mon) 19:50:38 編集(投稿者)

    No84093 (AI さん) に返信
    > 4. JisRound(12.25 , 3) → 12.2
    > となってしまいます。

    これは想定どおりの動作です。

    当初の質問の仕様が曖昧になってしまっていますので、
    まずは「正しい仕様」を厳密に定めておくのが先決かと思います。


    繰り返しの質問になりますが、まずは仕様をハッキリさせましょう。
    No84065 で AI さんが書かれた ★JIS丸め★ とは、
    下記のいずれの動作を想定しているのでしょうか?

    >>> 有効数字3桁まででJIS丸め(有効数字4桁目をJIS丸め)をしたい


    (1) JIS Z 8401:1999 の規則 A(偶数丸めとか銀行丸めとか五捨五入と呼ばれる動作)
    (2) JIS Z 8401:1999 の規則 B(いわゆる四捨五入)
    (3) 上記以外


    なお、JIS 丸めについて知りたい場合は、下記の【JIS検索】で、
    "Z8401" を検索してみて確認してみてください。数ページの PDF です。

    https://www.jisc.go.jp/app/jis/general/GnrJISSearch.html



    具体例を挙げると、規則 A と B では下記のような違いがあります。
     規則A では、1.5 や 2.5 は 「2」に丸められます。-1.5 や -2.5 は「-2」です。
     規則B では、1.5 は「2」に、2.5 は「3」に丸められます。-1.5 は「-2」、-2.5 は「-3」です。


    規則 A では、中間値は偶数方向に丸められます。だから ToEven。

    規則 B では、正の中間値は切り上げされますが、負の中間値は切り捨てです。
    ゼロを基準に正負で対称的になっています。だから AwayFromZero。


    このほか、正数で負数とで対象性が無い方が望ましい場合もあるでしょう。
    たとえば摂氏温度や華氏温度などでは、ゼロを基準として丸め方が変わると困るので、
    正負によらず中間値が常に切り上げとなるような四捨五入として、
    -1.5 は「-1」、-2.5 は「-2」へと丸めたいこともあります。

    しかし、JIS 規格の『数値の丸め方』では、そのようなパターンは定められていません。

    [JIS Z 8401 : 1999] より引用
    》 この規格では対象となる数値として正の数値しか想定していない。
    》 負の数値を対象とする場合は、その絶対値に適用しなければならない。



    > 3. JisRound(12.251 , 3) → 12.3 ※No84084の値で確認
    > 4. JisRound(12.25 , 3) → 12.2
    > 3と4で両方の結果が異なる理由がよく分かりません。

    今回は、Decimal 型の精度(有効桁数 28.8 桁)での処理ですよね。

    12.251 は、規則 A でも B でも「12.3」になります。
    12.250 は、規則 A では「12.2」、規則 B では「12.3」です。



    有効桁数 3 桁で丸めたときに「12.3」になる十進小数の範囲:

    【規則 A (ToEven) の場合】
    12.250000000000000000000000001D 以上
    12.349999999999999999999999999D 以下

    【規則 B (AwayFromZero) の場合】
    12.250000000000000000000000000D 以上
    12.349999999999999999999999999D 以下


    有効桁数 3 桁で丸めたときに「12.2」になる十進小数の範囲:

    【規則 A (ToEven) の場合】
    12.150000000000000000000000000D 以上
    12.250000000000000000000000000D 以下

    【規則 B (AwayFromZero) の場合】
    12.150000000000000000000000000D 以上
    12.249999999999999999999999999D 以下
記事No.84065 のレス /過去ログ143より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -