痔になりやすい生活習慣とは?

 自分のHPの掲示板にて、以下のような質問がありました。上下は割愛させて頂いています。

-1.2345の小数点以下を切り捨てた時の答え
-1.2345の小数点以下を切り上げた時の答え

 幾つかのHPを検索してみたのですが、関数関係の難しいページにばかり入ってしまい、中学生(実はもうすぐ受験)の自分にはとうてい理解することが出来ない物ばかりです。しかも、エクセルによる計算では失敗してしまうなど、様々な情報が飛び交っているので、正直混乱しています。
 教えてgoo!での過去のスレッドでも、人によって答えが違うなど、どうやって参考にすればいいのか分からないものばかりだったので、失礼ながら新たに質問をさせて頂きます。
 どうか、上記の掲示板からの質問の答えを、簡単な説明と共に教えて頂けないでしょうか。よろしくお願いします。
 それでは、駄文失礼致しました。
 

このQ&Aに関連する最新のQ&A

A 回答 (3件)

負の数の場合の解釈は一通りではありません。


-3.14の整数部分(と小数部分)と言ったとき,分野やプログラミング言語によって,-3(と-0.14) とするものと -4(と+0.86) とするものがあります。一冊の本の中でバラバラでは困りますが,統一されていれば,その本の内容を表現するのに便利な方を,最初に断って使えばいいのです。
    • good
    • 3
この回答へのお礼

 回答ありがとうございます。
 ようやく謎が解けました。正確には、解けないと言うことが分かりました。統一されていれば問題ないと言う結論は、少し意外ではありますが、今まで見てきたページの意見同士がやっと頭の中で整理できました。

お礼日時:2006/03/05 22:53

-1.2345


マイナスの方向に切り上げたら
-2
プラスの方向に切り上げたら(0の方向に一番近い整数)
-1
    • good
    • 3
この回答へのお礼

 回答ありがとうございます。
 やはり、何通りかのやり方が存在するんですね。参考になりました。

お礼日時:2006/03/05 22:54

中学生ということだと、質問内容も中学生レベルの内容ということでしょうか?



「切り捨てる」
ということは、小数点以下はないものとして考えるということです。
なので
-1.2345だと小数点以下切捨て「-1」

「切り上げる(中学生だということで常に正の方向に切り上げると制限しておきます。)」
小数点以下の値が何であろうと、整数部分に+1するということです。
なので、-1.2345を切り上げると-1+1=0 0が答えです。

わかりにくかったらごめんなさい。
    • good
    • 0
この回答へのお礼

 回答どうもありがとうございます。
 その考え方は、実は、自分が最初に考えのと同じ方法です。この考え方でも間違っていないと聞いて、受験生としてなんだか安心しました。

お礼日時:2006/03/05 22:50

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelの関数で「マイナス値の切り上げ」のやり方をおしえてください

Excelの数学関数で切り上げ(roundup)がありますが、計算結果がマイナスになるとき、絶対値で切り上げられてしまうため、実際にはマイナスが大きくなってしまいます。言っている意味はわかってくれますか?
roundupの特性上しかたないのであれば、IF関数を利用して、
数値が0より大きいときはroundup
数値が0より小さいときはrounddown
とすることも考えましたが、もっと簡単な関数がありそうな気がして仕方ありません。
知っている方がいたらぜひ教えてください。

Aベストアンサー

No.1です。

すみません。No.1の数式では不備がありました。
やはり、条件分岐で、

=IF(A1>=0,ROUNDUP(A1,1),ROUNDDOWN(A1,1))

とするしかないと思います。

QCOBOLの計算方法

COBOLの計算方法について解らない事があり、
質問させて頂きます。

例えば、
111.112÷3=37.03733・・・
の計算で小数点第4位の切捨てまたは、切上をしたい場合、
どのようなコーディングをすればよろしいでしょうか?

Aベストアンサー

01 WORK-AREA.
03 WK-ANS PIC S9(09)V9(04).
03 WK-WK PIC S9(09)V9(04).
03 WK-SUTE PIC S9(09)V9(03).
********************
PROSEDURE DIVISION.
********************
* 切り上げ
COMPUTE WK-WK = 111.112 / 3.
ADD 0.0009 TO WK-WK.
MOVE WK-WK TO WK-ANS. *> 切り上げ
* 四捨五入
COMPUTE WK-ANS ROUNDED = 111.112 / 3.
* 切捨て
COMPUTE WK-SUTE = 111.112 / 3.

何も意識しなければ切捨てになります。
四捨五入はROUNDEDか、0.0005を足してもOK。
切り上げは0.0009する。

こんな感じで如何ですか!

Q四捨五入

小数点以下を四捨五入するとして、「-1.5」は「-1」なのか「-2」なのかどちらなのでしょうか?

Aベストアンサー

「四捨五入」の定義によるんだけど....
1.「小数部が 0.5以上ならより大きい整数に, そうでなければより小さい整数にする」なら -1
2.「絶対値を四捨五入して (必要なら) 符号を付ける」とすれば -2
3.「小数部が 0.5 のときには近い偶数にする」という ISO の原則を使うと -2
でしょうか. 数学的には1が最も自然だとは思います.

Q負の数の四捨五入の方法

はじめまして。大学で週一でC言語を習っている全くの初心者です。
過去ログを確認したのですがなかったようなので質問させていただきます。
タイトルの通りなのですが「入力される実数が負の数の場合」に四捨五入するプログラムを作れ!とのことなんですが・・・。
正の数の四捨五入のプログラムは作りましたが、逆がわかりません。
-------------------------------------------------------------
//入力された正の実数を四捨五入して整数にするプログラム
#include <stdio.h>

int main(void)
{
int seisu;
double jissu;

printf("実数=");
scanf("%lf" ,&jissu);

seisu =jissu + 0.5;

printf(" %lf の四捨五入は %d です。\n",jissu,seisu );
}
------------------------------------------------------------
ちょこっと変えればいいのかなぁ・・・とは思うのですが・・・。
ご教授お願いします。
ちなみにOSはXP、使っているコンパイラはbcc32というやつです。

はじめまして。大学で週一でC言語を習っている全くの初心者です。
過去ログを確認したのですがなかったようなので質問させていただきます。
タイトルの通りなのですが「入力される実数が負の数の場合」に四捨五入するプログラムを作れ!とのことなんですが・・・。
正の数の四捨五入のプログラムは作りましたが、逆がわかりません。
-------------------------------------------------------------
//入力された正の実数を四捨五入して整数にするプログラム
#include <stdio.h>

int main(void)
{
int...続きを読む

Aベストアンサー

小学生で教わる形式なら、
seisu =jissu + 0.5;
でOKです。数直線上で考えれば負数だったとしても四捨五入はいつもこうなります。そのままのプログラムで問題ありません。
(-1.3なら-1に、-2.5なら-2に、-0.5なら0に丸めます。真ん中の場合は必ず大きいほうに丸められます。)

ただし、JISやISOなんかでは、定義が変わります。
ちなみに、JISやISOの定義だと
(1) 一番近い丸め結果候補が1つだけなら,その数に丸める,
(2) 一番近い丸め結果候補が2つある場合は,末尾が偶数のものに丸める,
(3) 丸め処理は1段階で行なわなければならない.
(引用: http://www.okada.jp.org/RWiki/index.php?JIS%2CISO%BC%B0%BB%CD%BC%CE%B8%DE%C6%FE )
となっています。

また、特殊な例としては、負数の場合は小さいほうに丸めるという方法をとる場合もあります。
if(jissu < 0){/*負数の場合*/
  seisu =jissu - 0.5;
}else{/*正数の場合*/
  seisu =jissu + 0.5;
}
これがその丸め方になると思います。(これは四捨五入と呼べるか怪しいので、参考にしないほうが良いと思います)

極めて細かいところまで精度を求めるようなものでない限り、小学生方式の四捨五入で問題ないと思います。

>決まった教場でしかプログラムが実行できないために確かめようがない
bcc32はBorlandからフリーでダウンロードできるコンパイラです。あなたでも環境を整えることはできると思われますので、やろうと思えば確かめることはできるはずですよ。↓
http://www.borland.com/jp/products/cbuilder/freecompiler.html
ぜひ試してみると良いと思います。

小学生で教わる形式なら、
seisu =jissu + 0.5;
でOKです。数直線上で考えれば負数だったとしても四捨五入はいつもこうなります。そのままのプログラムで問題ありません。
(-1.3なら-1に、-2.5なら-2に、-0.5なら0に丸めます。真ん中の場合は必ず大きいほうに丸められます。)

ただし、JISやISOなんかでは、定義が変わります。
ちなみに、JISやISOの定義だと
(1) 一番近い丸め結果候補が1つだけなら,その数に丸める,
(2) 一番近い丸め結果候補が2つある場合は,末尾が偶数のものに丸める,
(3) 丸め...続きを読む

QSQLServerでの切り上げ処理

SQLServerで、小数部の丸め処理で困っています。

切り捨て → round(150.7, 0, 1)
四捨五入 → round(150.7)

というところまではなんとかわかったのですが、切り上げ処理がうまくいきません。

ceiling(150.7)やfloor(150.7)などいろいろ試してみたのですが、どうしてもうまくいきません(T-T)

どなたかわかる方がいらっしゃいましたらアドバイスお願いします。

Aベストアンサー

s_husky です。

select ID, (round(round(数量 + (0.99) * sign(数量), 2),0,1)) from table1;

負の値については考慮していませんでした!
面目ありません!

Q消費税内税はどのようにして計算しますか

税込み5000円の商品の場合内税は238円でOKですか?
どのようにして計算しているのでしょうか。
教えて下さい。

Aベストアンサー

>税込み5000円の商品の場合内税は238円でOKですか?
OKです。

>どのようにして計算しているのでしょうか。
5000÷1.05=4762(5000円の税抜き価格)
5000-4762=238(内税額)

ちなみに私は税計算の出来る電卓を使用しています。

Q-0.1の切り捨て・切り上げ

-0.1の切り上げ・切捨ての答えは何になるのですか?
考え方もいっしょに教えてください。
よろしくお願いいたします。

Aベストアンサー

さらに質問者の方を混乱させるようで申し訳ないのですが…
私も純粋数学の卒業生として、謙虚に数学大辞典に目を通した上で発言させていただきます。
前回の私のガウス関数の考えは小数第1位での切捨てしか行えないので、この発言は撤回します。

まず、実数の大小について整理しましょう。当たり前のことから。
3と6では6のほうが大きい
それではー3とー6ではどちらが大きいですか?
-3ですよね。
なんとなくですが、このレベルから混乱しているのではないかと思います。

実数においては数には大小があります。
不等式が出てきた時点で、考える変数は実数と限定するのと同じく、
切捨て、切り上げ、四捨五入などについても、この言葉を持ち出したら、
数の対象は実数に限ってよいと思います。

新数学辞典(一松信/竹之内修編P.33R)を読むと、次のように書いてありました。

切捨て…端数が何であろうとこれを捨ててしまう方法
切り上げ…端数を捨てて、最後の位に「1を加える」

前後もよく読みましたが、「絶対値」がどうのうとは出てきませんでした。
切捨てのほうだけ読むとどちらにも取れますが、
切り上げのほうを読めばわかるとおり、切捨てについては「その数を超えない最大のもの」でないと、不都合が生じます。たとえば-0.36について

-1 -0.4 -0.36 -0.3 0
数直線より、-0.36を小数第2位で切り捨てると-0.4となるはずです。
切り上げのときに、私の持っている辞典通りに行うと、-0.3

揚げ足取りのようで申し訳ないのですが、
もしER34Yutakaさんのおっしゃるように-0.36を切り捨てたら-0.3だとするなら、
上の定義に従うと切り上げたら-0.2 これでは意味がないと思います。
(あくまで、-0.36は、-0.4と-0.3の間にある数ですからね…)

勝手に結論付けをさせていただきますと、
「切り捨てられた数」は、元の数よりも小さく、
「切り上げられた数」は、元の数よりも大きくあるべきだと思います。
ここで言う「大きい」、「小さい」については、いわゆる数直線上で、より左にあるものが「小さい」より右にあるものが「大きい」ものとし、
ここでは絶対値は関係ないものとされるべきだと思います。

負の数の大小については絶対値を取ると逆転してしまうので、
混乱を生じさせやすいのだと思います。

さらに質問者の方を混乱させるようで申し訳ないのですが…
私も純粋数学の卒業生として、謙虚に数学大辞典に目を通した上で発言させていただきます。
前回の私のガウス関数の考えは小数第1位での切捨てしか行えないので、この発言は撤回します。

まず、実数の大小について整理しましょう。当たり前のことから。
3と6では6のほうが大きい
それではー3とー6ではどちらが大きいですか?
-3ですよね。
なんとなくですが、このレベルから混乱しているのではないかと思います。

実数においては数には...続きを読む

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

QEXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには

お世話になっております。
タイトルの通りの質問なのですが、
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するにはどうすればよいのでしょうか?

たとえば、A1のセルに「ABC」と入力されていたとします。
その「ABC」をヘッダーに自動的に出力できるようにしたいのです。
できればマクロは使いたくありません。

宜しくお願いします。

Aベストアンサー

「表示」メニューの「ヘッダーとフッター」では、セル参照を指定することはできません。
「行タイトル」や「列タイトル」しか使用できません。
「行タイトル」を使用するには「ファイル」メニューの「ページ設定」で「シート」タグを選択してください。
ここで「行タイトル」にA1でしたら1行目を選択すればOKです。
ただし、行丸ごとですので注意してください。

Q含まない言い方ってどうしたらいいんでしょうか

例えば、
1月1日以後といえば1日を含んで、それより後で
1月1日以前といえば1日を含んで、それより前で

じゃあ、3月1日を含まず、それより前はなんといったらいいのでしょうか?
うるう年があるので(しかも、いつがうるう年か知らないし)安易に2月28日以前とはいえないし。

元号なんかではどうしたらいいのでしょうか?
明治より前の元号を知らなかったら、明治を含めず、それより前をさす場合なんといえば?

時間ではどうしたらよいでしょうか?
1時0分0秒を含まず、それよりも前は何と表したらいいですか?

Aベストアンサー

>1月1日以後といえば1日を含んで、それより後で
>1月1日以前といえば1日を含んで、それより前で

これは法令における用法ですね。
法令用語に限るなら
「1月1日後」といえば1日を含まずに、それより後
「1月1日前」といえば1日を含まずに、それより前
を表すことができます。
これは以前のQ&Aにもありました。
http://okweb.jp/kotaeru.php3?q=550156

ただこの言い方は日常ではあまり馴染みがないので,
「1月1日の翌日から」または「1月2日から」
「1月1日の前日まで」または「12月31日まで」
としたほうが伝わりやすいと思います。

なお日常的な用法では
「1月1日以前」といえば1月1日を含まないほうが一般的だと思いますが。
「明治時代以前」といえば明治時代を含まないのと同じように。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング