• 締切済み

小数点 第n位 を切り上げ,切り捨て

実数 Y を小数点第n位で (1)切り上げ (2)切り捨て をしたいのですが、どのようにすれば良いのでしょうか

  • nao0
  • お礼率10% (50/483)

みんなの回答

  • ginyou
  • ベストアンサー率32% (138/431)
回答No.8

#6です #7の説明はちょつと間違っていたので訂正します 切り捨てについて補足説明をします。 小数点以下2桁目を切りすてる場合 切り捨てとは何かという事になります  10.51=10.5  -10.51=-10.5 である。 とします、実は INTの場合 言語仕様によっては、 -10.51=-10.5となるINTもあります VB6は-10.51=-10.6と確認しました 負の場合、切り捨てと言うのは-10.51=-10.6とします。 つまり、0より下にする事が切り下げという考えです。  -10.51=-10.5 このようにするには、以下のように、正と負を分けて計算する必要があります If Y < -1 Then Y2 = Abs(Y)    Y3 = Int(Y2 * 10 ) / 10 else   Y3 = Int(Y * 10 ) / 10 End If では、切り上げはというと If Y < -1 Then Y2 = Abs(Y)    Y3 = Int(Y2 * 10 + .09 ) / 10 else   Y3 = Int(Y * 10 + 0.9) / 10 End If とします。 切り上げの場合注意しなければいけないのは    Y3 = Int(Y2 * 10 + .09 ) / 10 この計算式では、負の時おかしくなるという事です  -10.51+.09=-10.42-->-10.5 -10.59+.09=-10.5-->-10.6 となります。 つまり負の時は-.09を付けなければいけないという事です。 つまり、単独でする場合、負の場合    Y3 = Int(Y2 * 10 - .09 ) / 10 となります。 どちらを選択するかは、好みによります。

  • ginyou
  • ベストアンサー率32% (138/431)
回答No.7

 #6です 切り上げについて補足説明をします。 小数点以下2桁目を切り上げる場合 切り上げとは何かという事になります  10.51=10.6  -10.51=-10.6 である。 とします、実はVBのINTは伝統的に 負の場合、切り上げと言うのは-10.51=-10.5とします。 つまり、0に近づける事が切り上げという考えです。 Fortran言語はINTは  -10.51=-10.6 となります このようにするには、以下のように、正と負を分けて計算する必要があります If Y < -1 Then Y2 = Abs(Y)    Y3 = Int(Y2 * 10 + 0.9) / 10 else   Y3 = Int(Y * 10 + 0.9) / 10 End If

  • ginyou
  • ベストアンサー率32% (138/431)
回答No.6

実数 Y を小数点第n位以下で(第n位を有効にする) と解釈していいでしょうか 1) int(Y*10^n+0.9)/10^n 2) int(Y*10^n)/10^n となります

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.5

すみません、#3の者です。 #3のロジック、微妙に間違ってました。 以下に訂正します。 (1)Yに10のn-1乗を掛ける。 (2)その結果に対して、切り上げの場合0.9を加え、切り捨ての場合何もしない。 (3)その結果を整数で切り捨てる(Int, Fix関数)。 (4)その結果を10のn-1乗で割る(元の桁数に戻す)。 小数点にして切り捨てないと切り捨てられませんでしたね。 考え方は後に解答されている#4さんと同じ考え方です(というより#4さんを見て間違いに気がつきました)。

  • vantage
  • ベストアンサー率60% (310/514)
回答No.4

(1) int(Y*10^(n-1)+0.9)/10^(n-1) (2) int(Y*10^(n-1))/10^(n-1)

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.3

以下のロジックで対応できます。 (1)Yに10のn乗を掛ける。 (2)その結果に対して、切り上げの場合9を加え、切り捨ての場合何もしない。 (3)その結果を整数で切り捨てる(Int, Fix関数)。 (4)その結果を10のn乗で割る(元の桁数に戻す)。 #ちなみに、Round関数はあくまでも丸め(疑似四捨五入=厳密には四捨五入ではないが四捨五入に近い丸め)であり、切り上げ・切り捨てではありません。 上記の考え方で、(2)で5を加えれば厳密な四捨五入もできます(Round関数のような丸めではなく)。

  • nek
  • ベストアンサー率34% (46/135)
回答No.2

#1です。 すみません四捨五入と勘違いしていました。 切り上げはROUNDUP 切捨てはROUNDDOWN になります。

  • nek
  • ベストアンサー率34% (46/135)
回答No.1

ROUND関数を使えば可能です。 ROUND(Y,n)でいいと思います。

関連するQ&A

  • 小数点の切捨て

    ご教授お願いいたします。 小数点の切捨てで、下記のように書いたのですが、あっていますでしょうか? double a=32.1111; long int l; double res; l = (int)(a * 10); res = l / 10; Cは、久しぶりなので忘れてしまいました。 小数点の切捨て・切り上げは、自力でやるんでしたよね? それとも、標準関数でもありましたでしょうか?

  • 関数 小数点切り捨て

    源泉所得税の計算で、小数点以下切捨てが必要になります。 以下、自動的に切り上げとなってしまいます。 A1 15000 A2 A1*0.1021 結果が1,531.5で、切り上げ1532となってしまいます。 切り捨てで1531にするにはどうしたら良いでしょうか?

  • エクセルで小数点以下切捨てについて

    エクセルでA1に105と入力し A2にA1の90%の値は94.5になりますが、 小数点以下を切り捨てにする場合どうすればいいのでしょうか? 切り上げの方法も一緒に教えて頂くとありがたいです。

  • 「.50」は切り捨て、「.51」は切り上げにしたい

    エクセルです。 小数点以下「.50」は切り捨て、「.51」は切り上げにしたいのです。 50捨51入というようです。 例 1.50→1 1.51→2 IFかなと思ったのですが、わかりません。 四捨五入ではなく、小数点以下を判断して 切捨て、切り上げはできるのでしょうか?

  • Excel2000 小数点について

    小数点以下切捨て整数に切り上げされる設定になっているのを解除する方法を教えてください。お願いします。

  • 小数点切捨て

    =ROUNDDOWN(AI5,-3)*0.109/5の関数があるのですが、小数点以下を切捨てにしたいので教えてください。 AI5のセルには896,958の数字がありこれで計算すると19,533になってしまいますので、19,532にしたいので、よろしくお願いいたします。

  • ROUND関数…小数点第2位で切り上げ・切り捨て

    お世話になります。 Excel2003を使用しています。 計算結果の数字を別セルに・・・97.759はROUNDUP(97.759,1)で97.8 同様に…103.103はROUNDUP(103.103,1)で103.2になりますが、本当は103.1としたいのです。 →小数点第2位が0の時は「切り捨て」1以上は「切り上げ」したいのです。 IF(「小数点第2位が0」,ROUNDDOWN(103.1,1),ROUNDUP(103.1,1)) で、いいかと思うのですが、「小数点第2位が0」の条件がうまくあらわせないため、完成できません。ROUNDを使ってもできそうだとは思うのですが、ちょっとだけ焦りも加わり、なかなか整理ができません。この考え方はあっているでしょうか?皆様のお力を貸していただければありがたいです。 ちなみに… セルの表示形式は「数値」 小数点以下の桁数は「1」 負の数の表示形式は「-1,234.0](今回、数値は負になることは有りません。)

  • エクセルで小数点の四捨五入の仕方

    エクセルで小数点の切り上げ切捨ての入力方法を教えて下さい。

  • 小数点以下切捨てについて教えてください。

    小数点以下切捨てについて教えてください。 税抜金額 520,000円 消費税   26,000円 計    546,000円 交通費   16,400円 合計   562,400円 会計システムに登録するのに、交通費込みで税抜き金額を 登録しなければならないのですが。。。 562,400*5/105=26,780.9523809 となります。 小数点以下切捨てで金額を出したいのです。 562,400-26,780=535,620 535,620*1.05=562,401となり、合計金額とあいません。 電卓で計算しても、会計システムにいれても同じ結果になります。 会計システムの消費税端数は切捨てで設定されています。 どのような計算をすれば良いのでしょうか?

  • エクセル 小数点第2位 切捨て方法

    エクセル(XPです)で小数点第2位の切捨てをしたいのですが (何もしないと四捨五入してしまいます) どなたか教えていただけますでしょうか? 例えばなのですが、 7900/34700*100=22.7665・・・% で小数点第1位までの表示で 「22.8%」ではなく「22.7%」としたいのです。 初心者で申し訳ないですが どなたか教えていただけますでしょうか?

専門家に質問してみよう