タグ

javascriptとmathに関するsomathorのブックマーク (10)

  • JavaScript で parseInt / parseFloat を使わない方が良い理由

    となるのが原因です。parseInt というのは、文字列を解析して整数値(int)を返すグローバル関数であり、引数をまず文字列に変換する仕様となっております。その段階で 0.0000005 が "5e-7" という文字列に変換されてしまい、その文字列の先頭の 5 だけが数字として解析されてしまったため、結果として parseInt(0.0000005) === 5 となりました。 なぜ String(0.000005) === "0.000005" に、String(0.0000005) === "5e-7" になるのかについては、この記事の最後で余談として説明します。 整数化には Math.trunc を使おう このように、parseInt は文字列を引数にすることを前提にしているため、速度の面でも可読性の面でも「小数値を整数値に変換したい」という場合に使うのは望ましくありません。最も望

  • 30分でわかるJavaScriptプログラマのためのモナド入門

    「30分でわかる」のは、だいたい、 4. モナド(Monad)とは何か? の読了までを想定しています。 また速い人なら、30分で全部一気に読み通せる分量でもあると思います。 30分以上かかっても一気読みしてしまうことが推奨されますし、一気読みできるように、前に戻って知識の再確認をしなくて済むように、最大限留意して構成を設計した上で執筆されています。 数学と用語問題。モナドの理論的基盤として圏論があるのは事実。理論的基盤がしっかりしているのはプログラミングという数学的作業において歓迎すべきことではある一方で、他方そのため一般的なプログラマにとってはまず用語に馴染みがない。歴史的に、圏論ベースのモナドを理論から関数型プログラミングに応用されていく過程では、実際、先駆者の間でさえ紆余曲折があったのだが、学習者へは馴染みのない用語を伴って、いきなり高度な数学的概念全開で天下り的に提示されてしまうこ

  • Intl.NumberFormatでゼロ埋めや%表記などの数値表現を楽に実装する

    Number#toFixed や Math.round/floor/ceil を駆使して表示用の値を整形することってないでしょうか。カンマ区切りをオレオレユーティリティ関数で実装したりそういったことを実現するライブラリを探したことはないでしょうか。 ほとんどの JavaScript の実行環境にはIntlという i18n のためのオブジェクトが組み込まれており、その中の1つにIntl.NumberFormatというクラスがあります。 オプションが色々あり、かなり便利で多機能なんですが整理された情報が少なく、身の回りで使用してる人も少ないと感じました。 Do you use Intl.NumberFormat? — れこ (@L_e_k_o) February 25, 2019 (2019/03/04あたりに結果表示されると思います。途中経過を見る場合元ツイートに飛んでください。) 「それ自

  • ECMAScriptの浮動小数点数の丸め仕様がスゴい - hnwの日記

    ECMAScriptの浮動小数点数の丸め関数である Number.prototype.toFixed() について調べてみたところ、浮動小数点数をわかっている人が作った硬派な仕様だと感じたので、解説してみます。 浮動小数点数の丸めの善し悪しについて 私はプログラミング言語の浮動小数点数の丸め処理に興味があり、過去に関連記事を30以上書いています。こうした活動から得られた知見として、良い丸め関数には次のような性質があると考えています。 仕様がシンプルで直感的であること 仕様が抜け漏れなく文書化されていること バグを作り込みにくい仕様であること どれも良い関数の一般論のような話ですが、丸め処理に限って言えば簡単な話ではありません。そもそも浮動小数点数の性質が人の直感に反するため利用者にとっても実装者にとっても罠が多く、結果として上の条件を満たせないことが多いのです(私が面白いと感じるポイント

    ECMAScriptの浮動小数点数の丸め仕様がスゴい - hnwの日記
  • Number.MAX_SAFE_INTEGER - JavaScript | MDN

    Standard built-in objectsNumberConstructorNumber() constructorStatic methodsNumber.isFinite()Number.isInteger()Number.isNaN()Number.isSafeInteger()Number.parseFloat()Number.parseInt()Static propertiesNumber.EPSILONNumber.MAX_SAFE_INTEGERNumber.MAX_VALUENumber.MIN_SAFE_INTEGERNumber.MIN_VALUENumber.NaNNumber.NEGATIVE_INFINITYNumber.POSITIVE_INFINITYInstance methodsNumber.prototype.toExponential()Nu

    Number.MAX_SAFE_INTEGER - JavaScript | MDN
  • JavaScript の parseInt で小数を整数に変換しようとしてはまる

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    JavaScript の parseInt で小数を整数に変換しようとしてはまる
  • JavaScript開発に役立つ重要なランダムの数式まとめ - ICS MEDIA

    プログラムで使うことの多い「乱数」。ゲーム開発やビジュアルアート、ウェブサイトのアニメーションにおいて乱数は非常に重要で、さまざまな用途で利用されています。プログラムで一般に乱数と聞くと、すべての数値が同じ頻度(分布)で出現する「一様乱数」と呼ばれる乱数をイメージする方が多いと思います。 多くの場合はこの「一様乱数」で取得した乱数を用いれば十分でしょう。しかし、場合によっては「一様乱数」ではなく、偏りのある乱数を用いることでコンテンツの見た目や現象の「自然さ」を演出することが可能です。 実は「一様乱数」に一手間加えることで、乱数の分布の偏りを制御できます。今回は乱数を使用して好みの分布を得るためのパターンをいくつか紹介します。 乱数分布のシミュレーションデモ (HTML5製) 次のデモはリアルタイムで乱数の出現頻度を計算し、グラフに可視化するコンテンツです。画面下のプルダウンで乱数の種類を

    JavaScript開発に役立つ重要なランダムの数式まとめ - ICS MEDIA
  • Efficient float32 arithmetic in JavaScript

    There are several different ways to represent floating-point numbers in computers: most architectures now use the IEEE754 standards, representing double precision numbers with 64 bits (a.k.a double, or float64) and single precision numbers with 32 bits (a.k.a float32). As its name suggests, a float64 has more precision than a float32, so it’s generally advised to use it, unless you are in a perfor

    Efficient float32 arithmetic in JavaScript
  • IEEE 754 - Wikipedia

    IEEE 754(アイトリプルイーななごおよん、アイトリプルイーななひゃくごじゅうよん)は、別の表記では「IEEE Standard for Floating-Point Arithmetic」と書かれるものであり、1985年にIEEEによって定められた、浮動小数点算術に関する標準規格である。 GNU coreutilsのマニュアルで「Almost all modern systems use IEEE-754 floating point」と書かれている[1]ように、ほぼ全てのモダンなシステムが使っている浮動小数点方式(の仕様)である。プロセッサ、FPUなどのハードウェア、浮動小数点演算ライブラリなどのソフトウェアで採用されている。 なお、多くのプログラミング言語やその処理系の仕様書では、IEEE 754 に準拠した処理とはわざわざ明記していないことが多い。[注釈 1] つまり実機でIE

    IEEE 754 - Wikipedia
  • JavaScriptによる小数計算の誤差を無くす

    var oldValue, newValue, diff; oldValue = 67; newValue = 66.9; diff = oldValue - newValue; diff = Math.floor(diff * 10) / 10; // 小数点第2位以下切り捨て console.log("今日は" + diff + "kgやせました!"); ファッ!? 0.1kg痩せたはずが、0kgと表示されてしまいました。 たかだか100gとはいえ、こんな表示になったらガックリきますね。 一行ずつ値を追っていくとわかるのですが、4行目で減算した時点でdiffの値が "0.09999999999999432" とズレてしまっています。 これはJavaScriptがIEEE 754という規格に従って実装されているためです。 つまり、この計算結果はJavaScriptの仕様なのでJavaSc

    JavaScriptによる小数計算の誤差を無くす
  • 1