• ベストアンサー

少数点以下の端数処理

少数点以下の端数処理で 少数点以下2位は切り上げ 少数点以下1位は 0.1~0.4の場合は0.5になり 0.6~0.9の場合は1.0になるようにプログラミングしたいのですが どのようにしたらいいのか教えてください 例 24.03の場合 24.03 → 24.1 ですが、0.5ずつですので、 24.1 → 24.5 になります。 ※24個と半分にしたい。 24.56の場合 24.56 → 24.6 24.6 → 25 よろしくねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.7

0.0001~0.5 の場合は0.5になり 0.5001~1.0 の場合は1.0になるように ということでよいのなら b = -Int(-a * 2 + 0.00005 ) / 2 です。 0.00005は誤差に対応するために付けています。(参考URL) (もしかしたら2重入力になったかもしれません。)

参考URL:
http://www.geocities.co.jp/SiliconValley-Bay/5308/

その他の回答 (7)

  • ziziwa1130
  • ベストアンサー率21% (329/1546)
回答No.8

2倍した数値を切り上げ、2で割れば良いですよ。

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.6

0.00000001~0.5の場合は0.5になり 0.50000001~1.0の場合は1.0になる ということでよいなら b = -Int(-a*2)/2 です。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.5

エクセルの計算式で =INT(A1)+((ROUNDUP(MOD(A1,1),1)>0)+(ROUNDUP(MOD(A1,1),1)>0.5))*0.5 A1セルに元の数値が入っています、INT・ROUNDUP・MODは通常のプログラム言語でも利用可能と思われますので参考になれば

noname#111181
noname#111181
回答No.4

言語はVBですよね。 こんな形になります。 ------------------------------- Dim x1, x2, x3 As Double x1 = 入力値 x2 = x1 - Math.Floor(x1) If (x2 <= 0.5) Then x3 = Math.Floor(x1) + 0.5 Else x3 = Math.Floor(x1) + 1 End If x3が出力値

  • 44753
  • ベストアンサー率19% (12/63)
回答No.3

No.2です。 こんな感じかな。 int(a+0.49)

  • 44753
  • ベストアンサー率19% (12/63)
回答No.2

0.49を足して、小数点以下を切捨てる。

回答No.1

言語は? VBAであれば Officeバージョン VBであれば .net(バージョン) or vb