« 2014年5月 | トップページ | 2014年8月 »

2014年6月25日 (水)

[Excel]数値を四捨五入する

セルの計算で四捨五入を行うには、ROUND関数を使えばよい。ROUND関数は四捨五入がきちんと行われる。5を丸める際に、偶数の方向に丸めるようなことはせず、四捨五入がきちんと行われる。以下は実行例。

=ROUND(1.35, 1)
→1.4

=ROUND(1.45, 1)
→1.5

2014年6月21日 (土)

[Visual Basic]四捨五入を行う

Math.roundメソッドにMidpointRounding.AwayFromZeroオプションを使えば四捨五入が行えることになっているが、丸める数値がDouble型の場合、うまくいかないことがあるため要注意。確実に四捨五入を行うには、数値をDecimal型にしたほうがよい。

Double型でも特にエラーは発生せずに使用できるが、MSDNのサンプルプログラムではDecimal型で行っている。

プログラム例

Dim dbl As Double
Dim dec As Decimal

' とりあえずDouble型で四捨五入を試してみる
' 手計算ではそれぞれ1.3、1.4になり、そのとおり出力される
dbl = 1.25
Console.WriteLine(CStr(Math.Round(dbl, 1, MidpointRounding.AwayFromZero)))
dbl = 1.35
Console.WriteLine(CStr(Math.Round(dbl, 1, MidpointRounding.AwayFromZero)))

' 複雑な式の結果を四捨五入してみる
' 手計算では20.1113になるはずだが、出力結果は20.1112となり四捨五入されていない
dbl = (Math.Abs(20.11125) + Math.Abs(20.11125)) / 2
Console.WriteLine(CStr(Math.Round(dbl, 4, MidpointRounding.AwayFromZero)))

' 同じことをDecimal型で試してみる、出力結果は20.1113になる
dec = (Math.Abs(20.11125D) + Math.Abs(20.11125D)) / 2
Console.WriteLine(CStr(Math.Round(dec, 4, MidpointRounding.AwayFromZero)))

出力

1.3
1.4
20.1112
20.1113

2014年6月 2日 (月)

[R]エンコードを指定する際の文字を調べる(使用できるエンコードの一覧を表示する)

iconvlist関数を使用する。

> iconvlist()
  [1] "437"                     "850"
  [3] "852"                     "855"
(以下、表示省略)

Windowsでよく使用されるシフトJISは、shift_jis、SJISなどと定義されている。

文字列でベクトルで返すため、検索などが簡単にできる。

> length(iconvlist())
[1] 374
> mode(iconvlist())
[1] "character"
> grep("jis|JIS", iconvlist(), value = TRUE)
[1] "SHIFFT_JIS" "SHIFFT_JIS-MS" "shift-jis" "shift_jis"
[5] "SJIS" "SJIS-MS" "SJIS-OPEN" "SJIS-WIN"

2014年6月 1日 (日)

[R]エラーメッセージ「In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : EOF within quoted string」

例えばread.csv関数でCSVファイルを読み込むときなどに、文字解析に失敗している可能性がある。それが日本語を含むテキストファイルであるならば、日本語コードを指定すると、このエラーメッセージが表示されなくなることがある。

« 2014年5月 | トップページ | 2014年8月 »

無料ブログはココログ

■■

■■■