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

わんくま同盟

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

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


■84069 / )  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 であることには変わりないのですけれどね。
返信 編集キー/


管理者用

- Child Tree -