数値の計算後の型は? 数値リテラルとかサフィックスとか

数値リテラル:

  • 整数 = int = 例:10
  • 小数点付き = double,float = 例:10.0

int型同士で計算すれば結果の値は常に『int』。
小数点以下切り捨て。四捨五入などしない。
int型の数値に「Math.Floor」などとは意味不明

double,floatやdecimalにキャストでもしないとコンパイルエラーになるはず。
某サイトでヘンなサンプルコードを見たのでちょっと確認も兼ねてです。

//リテラル
Console.WriteLine(
    "literal : {0}\n"+
    "literal(小数点付き) : {1}\n"+
    "literal(16進数) : {2}",
    10 / 3,
    10.0 / 3,
    0xa / 3);
結果:
literal : 3
literal(小数点付き) : 3.33333333333333
literal(16進数) : 3



//サフィックス
Console.WriteLine(
    "suffix[f] : {0}\n" +
    "suffix[f] : {1}\n" +
    "suffix[d] : {2}\n" +
    "suffix[m] : {3}",
    10f / 3, //f => float
    10 / 3f,
    10d / 3, //d => decimal
    10m / 3); //m => double

結果:
suffix[f]: 3.333333
suffix[f] : 3.333333
suffix[d] : 3.33333333333333
suffix[m] : 3.3333333333333333333333333333



変数
int i = 10;
double a = 10;
Console.WriteLine(
    "int : {0}\n"+
    "double : {1}\n" + 
    "\u0061 : {2}",
    i / 3,
    a / 3,
    \u0061 / 3);//\u0061 => a

結果:
int : 3
double : 3.33333333333333
a : 3.33333333333333



16進数の『0xa』は10進数の『10』。
『\u0061』は変数『a』のことで、上記の場合『変数 double a』を参照していて、ちゃんと計算できるのですが、実際にこんな書き方してる人がいたらちょっとひく。

余談ですが、Uint16のMaxValueを見るとドラクエⅠの経験値を思い出す。

Replace code-string β

コードをブログに載せるときに特定の文字を書き直すのが面倒なので、変換するものを作成しました。

Replace code-string



出来ることは二つです。

まず、対象となる文字をページ中央のテキストエリアに貼り付けます。

ページ左側のチェックボックスで変換したい項目を選択し、[実行]ボタンを押すと文字が変換され、ページ左側のテキストエリアに表示されます。

ベタ貼りしたいコードをタグで囲むことを想定し、いくつかのタグから一つ選び、[実行]ボタンを押すとテキストエリアに貼り付けた文字が指定したタグで囲まれ、ページ左側のテキストエリアに表示されます。

よろしければ使ってやって下さい。



▽免責事項▽
このWebページを使用、または使用できなかった際のいかなる損害も、
制作者 Y@$ 及び humming bird は、その責を負いません。
ご自身の責任においてご使用ください。

JavaScript - 正規表現 パターン・チェック β

JavaScriptの正規表現パターンをチェックするWebページを作成しました。
matchとreplaceに対応。簡単なパターンの作成、確認に使えたら良いかなと。
サンプル・パターンはぼちぼち追加していこうかと考えています。

JavaScriptの正規表現 パターン・チェック

http://humming.bird.2k8.googlepages.com/javascript_regexp_pattern_check.html

動作確認:
  • OS:Vista
  • ブラウザ:Firefox,Chrome,IE7
ご利用は自己責任でお願い致します。
不具合等ありましたらご報告頂けると幸いです。

追記:

2009/03/05
jQueryでいじりつつ、サンプルパターンを追加。

『/』の件について:
この件に関する記載を追加。

2009/03/08
サンプルパターンの見直し。
サンプルパターンの表題の見直しに伴うサンプルの配置換え。

2009/07/02
リニューアルしました!!
このページを置いているGPCがそろそろサービス停止になりそうなので、こちらに移動しました。

http://humming-bird.appspot.com/tool/js.regexp.pattern.check.html

ついでに色々と見直して、デザインも一新しましたので、よろしくお願いします。

Picasa ウェブアルバムが秘かにチョロメに対応

知らぬ間にPicasa ウェブ アルバムがChromeに対応していたことに気付いたのでご報告。

Chromeは初公開時点ではPicasa ウェブ アルバムにある画像(アルバム)をダウンロードすることは出来ませんでしたが、ごく最近の変更と思われますが、ダウンロードできるようになりました。

初公開時には「自サービスの機能を一部利用できないブラウザを開発しました」というかなり呆れたシロモノだったが、これでようやくまともになったかな、と思われる。

試しにSafariでもダウンロードできるか確認したところ、やはりできました。

これって棚ボタ的にPicasa ウェブ アルバムの対応ブラウザが増えたってこと?
逆にSafariに対応したらChromeにも対応できたとか?

まあ、どっちでもイイんですけど...

余談ですが、Picasa3のbeta版が出てるみたいですね。
ちなみに『Picasa』はPCにインストールして使うアプリケーションで、『Picasa ウェブ アルバム』はWebサービスです。

インターフェイスを理解する - C#

『隠蔽化』ってどういうこと?

まず、インターフェイスを調べるとよく目にするのは『隠ぺい化』という言葉。
これはあるクラスの中に幾つものメソッドやプロパティが詰め込まれていたとします。しかし、そのクラスのインスタンスの生成時に型として指定したインターフェイスによって、使用できるもの(プロパティやメソッドなど)が限定されます。そのクラスの中で使用できるものを限定できるということです。
例えば該当クラスの基底クラスとして、getアクセサしか持たない読み取り専用のインターフェイスを作成し、このインターフェイスを継承します。不用意にプロパティを書き換えられないようにする、という使い方が可能と言えます。

継承されることが前提

インターフェイスは継承されることが前提です。どんなメソッドやプロパティが必要か、派生クラスの設計図と捉えることができます。

中身はなし

あくまで設計図ですので、アクセサやメソッドの中身(実装)は派生クラスで行います。プロパティの型の他、メソッドの引数や戻り値の型などを指定します。

インターフェイスは型

該当クラスのインスタンスを受け取る際の引数の型として、その状況に最適なインターフェイスを指定する、という方法で間違ったクラスの使い方を防ぐ予防策となるのではないでしょうか。渡された側で型(インターフェイス)をキャストでもしない限り、つまり渡された型のままで使用すれば間違いを減らすことが出来るということです。

インスタンスは生成できない

インターフェイスはインスタンスを生成できません。

インターフェイスを継承する派生クラスはPublicなどのアクセス可能な修飾子です。ということはインターフェイスを介さずともそのクラスを使用することは可能ということになります。
インスタンスを生成する際の型の指定としてインターフェイスは使われてもインスタンスは該当のクラスということになります。ということは強制的にインターフェイスを使用させることはできないということでもあります。そしてインターフェイスは所詮「型」であるため、キャストしてしまえばインターフェイスで定義したルールを無視することも出来てしまいます。

このため結局のところ、コーディングの際の規則として、例えば「このクラスをここで使用する場合はこのインターフェイスを使用して下さい」的なルールが存在すること前提の機能と考えた方が良い。

その他

インターフェイスで定義されたプロパティやメソッドなど、これら全てが派生クラスに存在しなければならない。
逆に継承するインターフェイスに定義されていないプロパティやメソッドなどを派生クラスで作成することは可能です。

インターフェイスから継承したメンバは基本的には全てPublicです。
クラスは一つしか継承出来ません(多重継承禁止)がインターフェイスはいくつでも継承可能です。
インターフェイスでコンストラクタの定義はできません。
delegateでイベントに使用するなどのメソッドの型を定義することは出来ません。
operatorをイジることは出来ません。

Sony Style(ソニースタイル)
デル株式会社

Recent Posts