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

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

C# と VB.NET の入門サイト

Re[14]: 有効桁数3桁まででJIS丸めがしたい


(過去ログ 143 を表示中)

[トピック内 18 記事 (1 - 18 表示)]  << 0 >>

■84065 / inTopicNo.1)  有効桁数3桁まででJIS丸めがしたい
  
□投稿者/ AI (1回)-(2017/05/12(Fri) 14:53:14)

分類:[VB.NET/VB2005 以降] 

2017/05/12(Fri) 15:07:31 編集(投稿者)
2017/05/12(Fri) 15:07:15 編集(投稿者)

VB.net2005で開発をしております

有効数字3桁まででJIS丸め(有効数字4桁目をJIS丸め)をしたいのですが、
どのように考えれば良いのか分からずに困っております。

例1. 0.1234 → 0.123
例2. 1.234 → 1.234
例3. 12.345 → 12.3
例4. 123.45 → 123
例5. 1234.5 → 1230

例1. 0.1234 → 0.123 の場合であれば、
以下のように求めればよいかと思いますが、
他の例2.〜5などの場合どのように求めれば良いのか分かりません。

Dim Value as decimal

Value = System.Math.Round(0.1234, 3)

以上、アドバイスの程どうぞよろしくお願いします。




引用返信 編集キー/
■84066 / inTopicNo.2)  Re[1]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ Jitta (295回)-(2017/05/12(Fri) 15:18:33)
No84065 (AI さん) に返信

Decimal 型を使うなら、
元の数を1未満になるまで10で割って、
roundして、
割った回数だけ10を掛ける。
引用返信 編集キー/
■84067 / inTopicNo.3)  Re[2]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ AI (3回)-(2017/05/12(Fri) 15:35:48)
No84066 (Jitta さん) に返信
> ■No84065 (AI さん) に返信
>
> Decimal 型を使うなら、
> 元の数を1未満になるまで10で割って、
> roundして、
> 割った回数だけ10を掛ける。

Jitta さん、ご回答ありがとうございます!

> 元の数を1未満になるまで10で割って、
> roundして、
> 割った回数だけ10を掛ける。

そんな考え方があったんだ!と思い、
更に色々なパターンを考えてみたのですが、
元の数が大きい場合はアドバイスいただいた考え方で計算できると思いますが、
元の数が小さい場合はどのようにすれば良いのでしょうか?

例えば、0.001234や0.0001234、0.00001234などだと
その考え方が使えないような気がするのですが...
どうすれば良いでしょうか?

アドバイスの程、どうぞよろしくお願いします。


引用返信 編集キー/
■84068 / inTopicNo.4)  Re[3]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ hihijiji (1回)-(2017/05/12(Fri) 16:17:54)
簡単なのは一度指数表記にしてから変換かな?
C#からの自動変換なので間違いがあるかもしれませんがこんな感じ
Dim dec = 0.012345D
Dim ans = dec
.ToString("0.0000e00")
.Split(New () {"e"C})
.[Select](Function(s) Decimal.Parse(s))
.Aggregate(Function(l, r) Math.Round(l, 2) * CDec(Math.Pow(10.0, CDbl(r))))
引用返信 編集キー/
■84069 / inTopicNo.5)  Re[1]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ 魔界の仮面弁士 (1273回)-(2017/05/12(Fri) 16:29:42)
No84065 (AI さん) に返信
> JIS丸め
JIS Z 8401 規則 A のことですかね。


> 例2. 1.234 → 1.234
3 桁にするなら、これは 1.23 になるべきなのでは?



> Dim Value as decimal

Decimal 型は、内部的に桁数情報を持っていますが、
それは考慮しないものと考えてよいですか?


'下記の 3 値は、いずれも 2.73 という値になる
'
Dim a As Decimal = CDec("1.230") + CDec("1.5")
Dim b As Decimal = CDec("1.23") + CDec("1.5")
Dim c As Decimal = CDec("1.23") + CDec("1.5000")

'いずれも同一の値として扱われるが、内部表現は異なっており、
'.ToString や .GetBits メソッドを呼び出した場合の結果が異なる
'
Console.WriteLine(a) '2.730  … 内部形式は 2730 * 10 ^ -3
Console.WriteLine(b) '2.73   … 内部形式は 273 * 10 ^ -2
Console.WriteLine(c) '2.7300 … 内部形式は 27300 * 10 ^ -4



> どのように求めれば良いのか分かりません。

手抜き実装:

Function 丸め(ByVal 値 As Decimal, ByVal 丸め桁数 As Byte) As Decimal
Return CDec(値.ToString("E" & (丸め桁数 - 1).ToString()))
End Function


> VB.net2005で開発をしております
蛇足ではありますが、2005 以降では .NET の名を冠さずに、
単に "Visual Basic 2005" のように呼ばれるようになっています。
(2003 までは "Visual Basic .NET 2003" などと呼ばれていましたが)

勿論、VB2005 も VB.NET であることには変わりないのですけれどね。
引用返信 編集キー/
■84071 / inTopicNo.6)  Re[4]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ AI (4回)-(2017/05/12(Fri) 17:24:02)
No84068 (hihijiji さん) に返信
> 簡単なのは一度指数表記にしてから変換かな?
> C#からの自動変換なので間違いがあるかもしれませんがこんな感じ
> Dim dec = 0.012345D
> Dim ans = dec
> .ToString("0.0000e00")
> .Split(New () {"e"C})
> .[Select](Function(s) Decimal.Parse(s))
> .Aggregate(Function(l, r) Math.Round(l, 2) * CDec(Math.Pow(10.0, CDbl(r))))

hihijiji さん、ご回答ありがとうございます!

> C#からの自動変換なので間違いがあるかもしれませんがこんな感じ

自動変換していただき、ありがとうございました。
自分なりにvb.netのコードに修正して、試してみました。

ToString関数を使うっていう発想がなかったです。
すごい、一瞬で変換できた!!と感動でした。笑

どうもありがとうございました。


引用返信 編集キー/
■84075 / inTopicNo.7)  Re[5]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ hihijiji (2回)-(2017/05/12(Fri) 18:17:02)
捕捉します。
.ToString("0.0000e00")で変換誤差があります。
必要桁数より2桁多く取っているので問題ないかと思いますがご了承ください。
引用返信 編集キー/
■84077 / inTopicNo.8)  Re[6]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ AI (5回)-(2017/05/12(Fri) 19:08:45)
No84075 (hihijiji さん) に返信

hihijiji さん、補足ありがとうございます!

> .ToString("0.0000e00")で変換誤差があります。

.ToString("0.00e00")が正しいという事ですよね?

修正して、テストしました。

どうもありがとうございました。

引用返信 編集キー/
■84079 / inTopicNo.9)  Re[7]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ hihijiji (3回)-(2017/05/13(Sat) 10:31:46)
いえそうではなく、例えば

1.11495 の入力があった場合
↓   少数5位が四捨五入されて
1.1150e-00
↓   少数3位が偶数丸めされて
1.12
の出力が返ってきます。
題意からは1.11が返ってくるべきですので、このケースでは答えがあいません。
ただし、確率的にはこんなケースは少なく有効数字3桁なら少数2位は誤差を含むため実用上は問題ないはずです。
.ToString("0.00e00")にすると、誤差以前に少数3位が四捨五入されますので題意からは完全に外れます。
引用返信 編集キー/
■84080 / inTopicNo.10)  Re[8]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ 魔界の仮面弁士 (1275回)-(2017/05/13(Sat) 11:14:24)
No84079 (hihijiji さん) に返信
> 1.11495 の入力があった場合
> ↓   少数5位が四捨五入されて
> 1.1150e-00
> ↓   少数3位が偶数丸めされて
> 1.12
> の出力が返ってきます。

少数→小数


私の No84069 や、AI さんの No84077 のコードでは対処されており、
問題なく 1.11 が返されるようになっています。


Dim a As Decimal = 1.11495D

Dim b As Decimal = CDec(a.ToString("E2"))
Dim c As Decimal = CDec(a.ToString("0.00e00"))


> ただし、確率的にはこんなケースは少なく
確率的とは?


> 有効数字3桁なら少数2位は誤差を含むため実用上は問題ないはずです。
Double や Single は二進小数ですが、Decimal は十進小数なので、
格納誤差は生じないはずですが、そういうことではなく?
引用返信 編集キー/
■84081 / inTopicNo.11)  Re[9]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ hihijiji (4回)-(2017/05/13(Sat) 11:40:47)
魔界の仮面弁士さん お世話になってます。
魔界の仮面弁士さんの書き込みには何度も助けられました。
レスを貰えて嬉しいです。

本題ですが、
1.125を小数3位で偶数丸め(JIS丸め)すると1.12になりますが、四捨五入すると1.13になります。
入力桁数が求める桁数より多い場合には、偶数丸めと四捨五入は5%の確率で違いがでます。
もちろん有効数字を扱う以上、5%の確率で最小桁が違っても実用上支障はないはずです。
しかし題意とは違ってしまいます。
そこで2回に分けて変換を行って題意に沿った(偶数丸めを行った)回答しました。
引用返信 編集キー/
■84084 / inTopicNo.12)  Re[10]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ 魔界の仮面弁士 (1276回)-(2017/05/13(Sat) 22:04:02)
No84081 (hihijiji さん) に返信
> 1.125を小数3位で偶数丸め(JIS丸め)すると1.12になりますが、四捨五入すると1.13になります。
> そこで2回に分けて変換を行って題意に沿った(偶数丸めを行った)回答しました。

2 回に分けると都合が悪いということは、ご自身も示されていますよね。
このことは、JIS Z 8401:1999 「数値の丸め方」にも明記されています。

》 規則 A,B を 2 回以上使って丸めることは,誤差の原因となる。
》 したがって,丸めは,常に 1 段階で 行わなければならない。
》 例 12.251 は,12.3 と丸めるべきであって,まず 12.25 とし,次いで 12.2 としてはならない。

規則 A はいわゆる偶数丸め、規則 B は四捨五入のことです。
VB でいえば

  規則 A … System.Math.Round(Decimal値, 小数部桁数, System.MidpointRounding.ToEven)
  規則 B … System.Math.Round(Decimal値, 小数部桁数, System.MidpointRounding.AwayFromZero)

にあたりますので、JIS丸めで例示されている 12.251 →12.3 は規則B(四捨五入)のことですね。


ひとまず、規則 A / 規則 B の双方に対応した、
『有効桁数』での丸め処理を作ってみました。

No84065 で示された要件は満たしていると思います。
(例2 については、 No84069 で指摘したように記載ミスであると想定)


''' <param name="digits">有効桁数(1〜29)</param>
Function JisRound(value As Decimal, Optional digits As Byte = 3, Optional mode As MidpointRounding = MidpointRounding.ToEven) As Decimal
  digits = Math.Max(1, Math.Min(29, digits))
  Dim fmt As String = StrDup(digits - 1, "#"c) & "0." & StrDup(29, "0"c) & "E0"
  Dim s() As String = value.ToString(fmt).Split("E"c)
  Dim a As Decimal = Math.Round(CDec(s(0)), 0, mode)
  Dim b As Integer = CInt(CDec(s(1)))
  Return CDec(String.Format("{0:0}E{1:D}", a, b))
End Function



指定された有効桁数が、有効数字の桁数よりも大きい場合には、
  JisRound(2.5D, 2) → 2.5
  JisRound(2.5D, 3) → 2.50
  JisRound(2.5D, 4) → 2.500
のように、小数部の末尾にゼロが付与された値で返却されます。
引用返信 編集キー/
■84093 / inTopicNo.13)  Re[11]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ AI (6回)-(2017/05/15(Mon) 18:03:08)
No84084 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士さん、ご回答ありがとうございます!

> 》 規則 A,B を 2 回以上使って丸めることは,誤差の原因となる。
> 》 したがって,丸めは,常に 1 段階で 行わなければならない。
> 》 例 12.251 は,12.3 と丸めるべきであって,まず 12.25 とし,次いで 12.2 としてはならない。
>
> 規則 A はいわゆる偶数丸め、規則 B は四捨五入のことです。
> VB でいえば
>
>   規則 A … System.Math.Round(Decimal値, 小数部桁数, System.MidpointRounding.ToEven)
>   規則 B … System.Math.Round(Decimal値, 小数部桁数, System.MidpointRounding.AwayFromZero)
>
> にあたりますので、JIS丸めで例示されている 12.251 →12.3 は規則B(四捨五入)のことですね。
>
>
> ひとまず、規則 A / 規則 B の双方に対応した、
> 『有効桁数』での丸め処理を作ってみました。
>
> No84065 で示された要件は満たしていると思います。
> (例2 については、 No84069 で指摘したように記載ミスであると想定)
>
>
> ''' <param name="digits">有効桁数(1〜29)</param>
> Function JisRound(value As Decimal, Optional digits As Byte = 3, Optional mode As MidpointRounding = MidpointRounding.ToEven) As Decimal
>   digits = Math.Max(1, Math.Min(29, digits))
>   Dim fmt As String = StrDup(digits - 1, "#"c) & "0." & StrDup(29, "0"c) & "E0"
>   Dim s() As String = value.ToString(fmt).Split("E"c)
>   Dim a As Decimal = Math.Round(CDec(s(0)), 0, mode)
>   Dim b As Integer = CInt(CDec(s(1)))
>   Return CDec(String.Format("{0:0}E{1:D}", a, b))
> End Function

JisRound関数の作成、どうもありがとうございます。

作成いただいた「JisRound」について、
テストさせていただいたのですが、少し気になる事がありました。

1. JisRound(1.11495, 3) → 1.11 ※No84079の値で確認
2. JisRound(1.125 , 3) → 1.12 ※No84081の値で確認
3. JisRound(12.251 , 3) → 12.3 ※No84084の値で確認
4. JisRound(12.25 , 3) → 12.2

となってしまいます。

1と2では欲しい結果になっていると思いますが、
3と4で両方の結果が異なる理由がよく分かりません。
おそらく「12.2」になれば正解だと思うのですが...
この値を求める事はできないのでしょうか。

試しに、以下のコートを実行してみました。
System.Math.Round(12.251, 1, System.MidpointRounding.ToEven) → 12.3
System.Math.Round(12.25 , 1, System.MidpointRounding.ToEven) → 12.2

アドバイスの程、どうぞよろしくお願いします。


引用返信 編集キー/
■84094 / inTopicNo.14)  Re[12]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ furu (96回)-(2017/05/15(Mon) 18:25:11)
No84093 (AI さん) に返信
> System.Math.Round(12.251, 1, System.MidpointRounding.ToEven) → 12.3
> System.Math.Round(12.25 , 1, System.MidpointRounding.ToEven) → 12.2

12.251は12.2よりも12.3に近いので12.3であってると思います。
12.25は12.2と12.3のどっちも0.05だけ違うので
偶数である12.2になる。
引用返信 編集キー/
■84097 / inTopicNo.15)  Re[12]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ 魔界の仮面弁士 (1278回)-(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 以下
引用返信 編集キー/
■84101 / inTopicNo.16)  Re[13]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ 魔界の仮面弁士 (1280回)-(2017/05/16(Tue) 09:37:09)
No84097 (魔界の仮面弁士) に追記
> 当初の質問の仕様が曖昧になってしまっていますので、
> まずは「正しい仕様」を厳密に定めておくのが先決かと思います。

ついでに、浮動小数点数(IEEE 754-2008)の丸めについても。


浮動小数点数の端数処理は 5 パターンが定義されています。
『最近接丸め(roundings to nearest)』が 2 パターンと
 (1) 偶数丸め (round to nearest, ties to even)
 (2) 0 から遠いほうへ丸め (round to nearest, ties away from zero)
『方向丸め(directed roundings)』が 3 パターンです。
 (3) 0 方向への丸め(RZ) … いわゆる切り捨て (truncation)
 (4) +∞ 方向への丸め(RI) … いわゆる切り上げ (ceiling)
 (5) -∞ 方向への丸め(RP) … いわゆる切り下げ (floor)



1 は二進小数の既定のモードで、十進小数でもこれが推奨されています。
Math.Round の ToEven モードがコレにあたりますし、CInt 等もこの動作です。
「JIS 丸め」「ISO 丸め」「銀行丸め(banker's rounding)」とも呼ばれるモードです。

2 は、Math.Round の AwayFromZero モードに相当します。
先述したように負数の扱いに注意が必要です。

3 は Math.Truncate メソッドや Decimal.Truncate メソッドに相当します。
VB の Fix 関数もそうです。

4 は Math.Ceiling メソッドや Decimal.Ceiling メソッドに相当します。

5 は Math.Floor メソッドや Decimal.Floor メソッドに相当します。
VB の Int 関数もそうです。



これ以外にも、多くの丸め処理があります。
https://ja.wikipedia.org/wiki/%E7%AB%AF%E6%95%B0%E5%87%A6%E7%90%86


たとえば業務レベルでは多くの場合、有効桁数で計算する事が一般的であり、時には、
有効桁数の直後の桁だけをみて、切り上げか切り捨てかを判断することが望まれることもあります。


ただ、当初の質問はそうした細かい動作について特に言及されていないため、
JIS 規格の「数値の丸め方」に則った実装にしてみた次第です。


いずれにせよ、一通りの答えは出ていると思いますので、これらを組み合わせることで、
望んでいる端数処理を作り上げることができるのではないでしょうか。
引用返信 編集キー/
■84114 / inTopicNo.17)  Re[13]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ AI (7回)-(2017/05/16(Tue) 14:39:55)
No84094 (furu さん) に返信
> ■No84093 (AI さん) に返信
>>System.Math.Round(12.251, 1, System.MidpointRounding.ToEven) → 12.3
>>System.Math.Round(12.25 , 1, System.MidpointRounding.ToEven) → 12.2
>
> 12.251は12.2よりも12.3に近いので12.3であってると思います。
> 12.25は12.2と12.3のどっちも0.05だけ違うので
> 偶数である12.2になる。

furu さん、ご回答ありがとうございます!

「JIS丸め」の考え方が、間違っていました。

> System.Math.Round(12.251, 1, System.MidpointRounding.ToEven) → 12.3
> System.Math.Round(12.25 , 1, System.MidpointRounding.ToEven) → 12.2

上記のようになるのが正解ですね。

「12.251」の有効桁数3桁でJIS丸めした結果が
「12.2」が正解だと思い込んでいたのが間違いでした。
正しくは「12.3」ですね。

ご指摘どうもありがとうございました。


引用返信 編集キー/
■84115 / inTopicNo.18)  Re[14]: 有効桁数3桁まででJIS丸めがしたい
□投稿者/ AI (8回)-(2017/05/16(Tue) 14:41:32)
2017/05/16(Tue) 14:42:33 編集(投稿者)
2017/05/16(Tue) 14:42:26 編集(投稿者)

魔界の仮面弁士さん、ご回答ありがとうございます!

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

やりたかった処理は、

(1) JIS Z 8401:1999 の規則 A(偶数丸めとか銀行丸めとか五捨五入と呼ばれる動作)

の処理です。

JisRound(12.25 , 3) → 12.2 になるのは理解できていたのですが、
JisRound(12.251, 3) → 12.3 になるのは、

> JIS丸めで例示されている 12.251 →12.3 は規則B(四捨五入)のことですね。

このような記載があったので、規則Aでは結果が「12.2」となるんじゃないかと
勝手に思い込んでしまい、質問させていただきました。

> 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 以下

そもそも規則AのJIS丸めの仕様が把握できていませんでした。
テストを再度実行し、上記のようになる事を確認させていただきました。

今回の件で、丸め処理がたくさんあるという事が分かり、
とても参考になりました。
どうもありがとうございました。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -