JavaScriptでJIS丸め
- 2012-01-03
- カテゴリ: Client Side
- タグ: Tips JavaScript メモ
前回、ExcelでJIS丸め等々を実装したので、余勢を駆ってJavaScriptでも実装したのでメモ。
ECMAScriptの仕様書によると、JavaScriptのMath.floor(), Math.ceil(), Math.round()は負の無限大(-∞)や正の無限大(+∞)に丸める実装になっているので、ゼロに近づける一般的な切り捨て、ゼロから遠ざかる一般的な切り上げ、ゼロから遠ざける一般的な四捨五入もメモ。
[JavaScript] UUID.js を更新しました!
- 2010-07-27
- カテゴリ: Client Side
- タグ: JavaScript UUID アルゴリズム
以前公開したまま放置していたJavaScript用のUUID生成ライブラリ、UUID.jsの最新バージョンを公開しました!
大幅な機能追加とバグ修正が行われて、ホスティング先もCodeReposからGitHubに変更されました!
LiosK's UUID.js at master - GitHub
UUID.js: The RFC-compliant UUID generator for JavaScript.
↓こんな感じのRFC 4122に準拠したUUIDをJavaScriptで簡単に生成することができます!
368606ed-98b5-11df-8fd2-0ba59ea365b9
UUIDは大量に生成しても重複が起きないように工夫されているので、中央で統制を取らなくとも一意のIDを生成できて何かと便利です!
使用例や動作サンプルは続きで!
[JavaScript] newは大事だよ!
- 2010-07-19
- カテゴリ: Client Side
- タグ: JavaScript トラックバック
JavaScriptのnewって何?一体何なの?という話 - 愛と勇気と缶ビール
クラスってものはJavaScriptにはないはずなのに、
new ClassName();
と書くとあたかもClassNameクラスのオブジェクトのインスタンスが生成され、それが返ってくるかのような挙動をしている。これは気持ち悪い。言語仕様としてはクラスは本来存在しないのに、クラスのようなものが導入されている。まともな神経を持った人間なら、一体 new演算子って何なの?という疑問を持つのが当たり前である。
こんな扱いを受けているnew
があまりにも不憫で涙した><
newはprototype-basedなJavaScriptを書くための唯一の手段[1]で、真にJavaScriptらしいコードを書くためには欠かすことができないものなのに><
ということで、newを擁護するためのエントリーをポスト。
乱数の精度を調べてたらOpera Miniのバグを見つけた
- 2010-06-05
- カテゴリ: Client Side
- タグ: Tips JavaScript バグ iPhone
前回の記事に引き続いてJavaScriptの乱数の精度を調べてたら、iPhone用のOpera Miniのバグを見つけた。
NumberオブジェクトのtoStringメソッドがうまく働いていないっぽい。
詳細は続きで。
JavaScriptの乱数の精度の話
- 2010-06-03
- カテゴリ: Client Side
- タグ: JavaScript Tips アルゴリズム
前回の記事で予告したとおり、今回はJavaScriptのMath.random()で生成できる乱数の精度の話。
前回の記事で、JavaScriptでは2^53未満の正整数を扱うことができるということがわかったから、今回の記事では2^53未満のランダムな正整数を生成してみる。
具体的には↓のようなコード。
var ub = Math.pow(2, 53), list = []; for (var i = 0; i < 16; i++) { list[i] = Math.floor(Math.random() * ub).toString(2); while (list[i].length < 53) { list[i] = "0" + list[i]; } // padding } window.alert(list.join("\n"));
JavaScript (ECMAScript) の整数の精度と乱数の精度について
- 2010-05-30
- カテゴリ: Client Side
- タグ: JavaScript Tips
久しぶりにJavaScript (というよりECMAScript) のネタ。今日はECMAScriptで扱える整数と乱数について。
ECMAScriptの数値 (Number) はIEEE 754の倍精度浮動小数点数であると仕様書に明記されている。
ECMAScript Language Specification 5th edition
4.3.19 Number value
primitive value corresponding to a double-precision 64-bit binary format IEEE 754 value.
(強調は引用者)
ECMAScript Language Specification 3rd edition
4.3.20 Number Type
The type Number is a set of values representing numbers. In ECMAScript, the set of values represents the double-precision 64-bit format IEEE 754 values including the special “Not-a-Number” (NaN) values, positive infinity, and negative infinity.
(強調は引用者)
なので、倍精度IEEE 754値の精度の範囲内であれば、桁落ちの心配をせずに整数として扱うことができる。
[JavaScript] prototypeに直接代入しちゃうのってダメじゃなかったっけ?
- 2010-02-02
- カテゴリ: Client Side
- タグ: JavaScript トラックバック
JavaScript基礎文法最速マスター - なんとなく日記という記事がはてブ界隈で話題になっていたので、徒然なるままに読んでみて心に浮かんだことをそこはかとなく書きつけてみる。
[JavaScript] サロゲートペアの扱い方をわかりやすくメモっておく
- 2008-11-13
- カテゴリ: Client Side
- タグ: Tips JavaScript Unicode
先日、JavaScriptでサロゲートペアに対応した文字列関数を書いたりしてみたが、これだけだとサロゲートペアの扱い方を思い出すにはわかりづらいので、わかりやすくまとめ直してメモっておこうと思う。
前提知識
- サロゲートペアを使って表現できるコードポイントの範囲はU+10000-U+10FFFFだけ (だから、UnicodeはU+10FFFFまでしかコードポイントを割り当てない仕様になってる!)
- サロゲートコードポイントはU+D800-U+DFFFの2048個 (11ビット)
- 2048個を上位サロゲート (U+D800-U+DBFF) と下位サロゲート (U+DC00-U+DFFF) に分けて、上位サロゲートと下位サロゲートの組み合わせ (1024*1024) でU+10000-U+10FFFFの範囲を表現する
[JavaScript] サロゲート・ペアに対応した文字列操作関数を書いてみた
- 2008-11-06
- カテゴリ: Client Side
- タグ: JavaScript 安易な発想 Unicode
JavaScriptの文字列型はUTF-16を採用しているから、サロゲートペアを使用した文字が混ざるといろいろと厄介だったりする。一例としては↓のような感じ。
var s = "𪚲"; // U+2A6B2 console.log(s.length); // 2 console.log(s.split("")); // ["", ""]
ということで、サロゲートペアの扱いを少し楽にする関数を書いてみたからとりあえず公開してみる。
Google Gears を「滑らかに」使うためのライブラリ、Grease for Gears を公開しました
- 2008-10-11
- カテゴリ: Client Side
- タグ: JavaScript Gears ライブラリ
表題の通り、Google Gears を「滑らかに」使うためのライブラリ、Grease for Gears を公開しました!
最近、Gears を使っていろいろといじっていたんだけど、Gears の API がどうにも使いづらい><JavaScript に慣れた身にはやたらと冗長に感じたり、フレームワークに慣れた身にはやたらと低機能に感じたり><
ということで、LL 脳でフレームワーク脳の僕でも、Gears を滑らかに使えるようになるためのライブラリを書いてみました!ソースは CodeRepos に置いてあります。
root/lang/javascript/Grease - CodeRepos
使い方とか API とか詳しいことは続きで!