From ruby-math-admin@netlab.co.jp Tue Jun 13 17:12:27 2000 Received: from voscc.nagaokaut.ac.jp (voscc.nagaokaut.ac.jp [133.44.1.100]) by blade.nagaokaut.ac.jp (8.8.8/8.8.8/Debian/GNU) with ESMTP id RAA06392; Tue, 13 Jun 2000 17:12:27 +0900 Received: from hoyogw.netlab.co.jp (postfix@hoyogw.netlab.co.jp [210.251.121.20]) by voscc.nagaokaut.ac.jp (8.9.3/3.7W) id RAA89882; Tue, 13 Jun 2000 17:08:23 +0900 (JST) Received: from hoyogw.netlab.co.jp (localhost [127.0.0.1]) by hoyogw.netlab.co.jp (Postfix) with ESMTP id 050ED46D14; Tue, 13 Jun 2000 17:08:19 +0900 (JST) Delivered-To: ruby-math@netlab.co.jp Date: Tue, 13 Jun 2000 17:08:15 +0900 (JST) From: Wakou Aoyama Reply-To: ruby-math@netlab.co.jp Subject: [ruby-math:00322] Re: Float#ceil, Float#floor, Float#round To: ruby-math@netlab.co.jp Message-Id: <20000613080815.6CA0646D13@hoyogw.netlab.co.jp> In-Reply-To: <00bb01bfd4f2$4b374230$8cd2fad2@ntfs1> X-ML-Name: ruby-math X-Mail-Count: 00322 X-MLServer: fml [fml 3.0pl#17]; post only (only members can post) X-ML-Info: If you have a question, send e-mail with the body "help" (without quotes) to the address ruby-math-ctl@netlab.co.jp; help= X-Mailer: cur-0.80(ruby/slang) + maillib-1.1.21 Mime-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp Precedence: bulk Lines: 56 Sender: ruby-math-admin@netlab.co.jp 青山です。 On Tue, 13 Jun 2000 13:45:43 +0900, "Shigeo Kobayashi" wrote: > ところが、負の引数もあるんですね、これが(以下 Excel のヘルプより).. > # 小数点の左まで考慮している なんと。まあ、しかし、round_up, round_down に分離すれば、それも可能で すね。 > Excel のように n<0 も必要なんでしょうか?? 以前、1.1E2, 11.1E2, 111.1E2 のような例を書きましたが、これは指数表記 が可能な場合です。それが出来ない場合には、110, 1110, 11110 で、整数部 の下から2桁目がまるめの対象となります。 という事で、指数形式で扱う仕組みが無い場合には必要です。なるほど。 Excel にはあったんですね。さすが。 > なんと! Excel はちがうんですね、 > > FLOOR(数値, 基準値) >   数値を挟む基準値の倍数のうち、0 に近い方の値を返します。 > CEILING ってのもあるんですが同様です。なんだか、とってもメンドウ???? > # きっと銀行系の方は理解できるのでしょう。 これはちょっと変かも。floor(-1.n) --> -1 って事ですよね。 C の場合: floor(x): x より大きくない最大の整数 floor を英和では: (価格・賃金などの)最低限度 (⇔→ceiling) 英和での最低限度という言葉からも、floor(-1.n) --> -2 という、C の動き があっているように思われます。 Excel のこの動きは、round_down ですよね。round_down(-1.n) --> -1 Excel って、floor, ceil をそっくり round_down, round_up と同じ動きにし ているのかも。という事は、floor, ceil を切捨て、切上げとして使っている という事ですかね。 まあ、確かに銀行系ではそうなのでしょうけれど、素直に round_up, down を 使うべきのような。逆に言えば、無限小に近い方の値を返す関数が無いという 事ですよね。そういうのが必要な場合、Excel ではどうするのやら。 という事で、ここまでをまとめると、ceil, floor とは別に round, round_up, round_down を用意する。ceil, floor は無限小を基準のままとし、 round 系は 0 を基準とする。引数は数値で、正では小数部、負では整数部の 桁数を指定する。という感じでいかがでしょう? -- 青山 和光 Wakou Aoyama