質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • JavaScript

    22100questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Math.ceiling()とceil()の違い

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,021

aaaaaaaa

score 479

javascriptにおける小数点の切り上げを行うceiling()とceil()の違いを教えてください。
今現在学んでいる書籍には、ceiling()は載っておらず、ceil()のみです。
パーフェクトjavascript126pにて別の書籍の引用として

Math[this < 0? "ceiling" : "floor"](this)


という与えられた数字の符号によって呼び出すメソッドを変えるブラケット演算子です。
この引用で初めて、ceil以外にceilingがあるのだと知りました。これらの違いは何なのでしょうか。flooring()も存在するのでしょうか。

また、書籍を見るまでは、数字の符号によって云々という処理をifなどの条件分岐で行っていたと思うのですが、ブラケット演算子を利用することで、こんな少ない行で切り上げ、切り下げができることを知りました。どうすれば賢くソース設計ができるようになるのでしょうか。このような、私にとってタメになる設計図を暗記していく以外にないのでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+7

Math.ceiling は存在しません。
Google Chrome 等のブラウザで実行するだけで明らかになるので、質問する前に自分の環境で検証して下さい。

 書籍『パーフェクトJavaScript』

文章を局所的に見るのでなく、前後をよく読みましょう。
『パーフェクトJavaScript』(P126)には次の一文があります。

技巧的ですが書籍「JavaScript: The Good Parts」(注4)の例を引用します。

つまり、『JavaScript: The Good Parts』の中のコードを転記したのでしょう。
該当ページ数が書いてない辺りは引用としては不完全ですが。

 書籍『JavaScript: The Good Parts』

[2009年1月 (2刷にて修正)] の節で

- P.38
  Math.ceiling(2箇所あり)
  ↓
  Math.ceil

とありますので、typoでしょう。

 まとめ

『JavaScript: The Good Parts』は古い書籍なので『パーフェクトJavaScript』の執筆時点では改定済のはずですが、著者は『JavaScript: The Good Parts』の初版を持っていてそちらを参考にしたのでしょうね。
ただし、JavaScript を学習した人なら気が付いて当然の typo であり、『パーフェクトJavaScript』の内容は信頼性が低いといわざるをえません。
書籍にする前に実行してみれば一目瞭然でしょう。

Re: aaaaaaaa さん

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+4

JavaScriptのMathにceiling()という関数はありません。その文はまちがいです。

暗記というか、とらえ方は人それぞれだと思いますが、JavaScriptの言語仕様を覚えていけばいいと思います。そうすれば、もっとシンプルなコードが書けるようになります。
ですが可読性とのトレードオフとなってしまいがちですので、可読性は維持しつつでシンプルなコードを書くようにしましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

Math.ceiling()という関数はありません。

console.log( Math );
/*
Math
E:2.718281828459045
LN2:0.6931471805599453
LN10:2.302585092994046
LOG2E:1.4426950408889634
LOG10E:0.4342944819032518
PI:3.141592653589793
SQRT1_2:0.7071067811865476
SQRT2:1.4142135623730951
abs:abs()
acos:acos()
acosh:acosh()
asin:asin()
asinh:asinh()
atan:atan()
atan2:atan2()
atanh:atanh()
cbrt:cbrt()
ceil:ceil()
clz32:clz32()
cos:cos()
cosh:cosh()
exp:exp()
expm1:expm1()
floor:floor()
fround:fround()
hypot:hypot()
imul:imul()
log:log()
log1p:log1p()
log2:log2()
log10:log10()
max:max()
min:min()
pow:pow()
random:random()
round:round()
sign:sign()
sin:sin()
sinh:sinh()
sqrt:sqrt()
tan:tan()
tanh:tanh()
trunc:trunc()
Symbol(Symbol.toStringTag):"Math"
__proto__:Object
*/

【JavaScript Math Reference】
http://www.w3schools.com/jsref/jsref_obj_math.asp

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • JavaScript

    22100questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。