スポンサーサイト





上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

2÷3=0 ?





整数の型や小数の型を勉強しましたが、世の中は型に当てはまるものばかりではありません(おいおい何が言いたいのか)。

たとえば、2÷3を計算するプログラムを作ってみます。答えは0.666…と小数になるはずなので、double型とfloat型の両方の答えを求めてみましょう。


public class Sample
{
public static void main(String args[])
{
double d=2/3;
float f=2/3;

System.out.println(d);
System.out.println(f);
}
}



これを実行すると、

0.0
0.0



になってしまいました。

正しく

0.6666666666666666
0.6666667



と表示されるようにするにはどうしたらいいのでしょうか?


さて、なぜエラーが出たかということを説明します。

先ほどの演算は、2を3で割ってdouble型やfloat型に代入するというものです。その2と3は、実は整数型です。2÷3の1の位は0ですから、0をdouble型やfloat型に変換すると0.0になります。

ということは、2または3の少なくとも一方をdouble型またはfloat型に変換しておけばいいのです。

具体的には、

double d=(double)2/3;

のように表記します。

または、

double d=2/3D;

のような表記でも大丈夫です。「Dは小文字でも大丈夫か?」という疑問をもたれたらご自分で試してみてください。

ではプログラムを書き換えてみます。


public class Sample
{
public static void main(String args[])
{
double d=(double)2/3;
float f=(float)2/3;

System.out.println(d);
System.out.println(f);
}
}



知ったら簡単な話ですが、知らないと延々と苦しむことになりますのでこの機会に覚えておきましょう。

関連記事

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://javamania.blog25.fc2.com/tb.php/18-2b7411d2
  • 閉じるボタン
クラスライブラリ解説 目次
クラスライブラリとは
 ├ Java APIの調べ方
 ├ Objectクラスを調べる
 ├ ライブラリのインポート
 ├ 完全修飾クラス名を調べる
 ├ staticインポート
 ├ 外部ライブラリの利用

文字列を扱う
 ├ Stringとイミュータプル
 ├ StringBuilder 文字列の連結
 ├ toString()のオーバーライド
 ├ toXxCase() 大文字と小文字
 ├ compareTo() 値の比較
 ├ parseDouble() 文字を小数値に
 └ 文字列を抜き出す
 ├ char配列からString型へ変換
 ├ 空白文字の除去

日付を扱う
 ├ Calendar 現在の日付
 ├ Date 日付の表示

数値演算を扱う
 ├ round() 切上・切捨・四捨五入
 ├ BigDecimal
 ├ sqrt(),pow() 累乗と平方根
 ├ BigInteger
 ├ int型の最大値・最小値
 ├ random() 乱数作成

ファイルを扱う
 ├ ファイルの存在確認
 ├ ファイルを作成
 ├ ファイルの削除
 ├ ファイルサイズを調べる

入出力ストリーム
 ├ ファイルを読み込む
 ├ 画像ファイルのコピー
 ├ 日本語の読み込みと書き出し
 ├ バッファ入出力
 ├ データ型フリーの出力ストリーム
 ├ getBytes()メソッド

書式つき入出力
 ├ 書式を指定して出力
 ├ 引数インデックス
 ├ 整数値のフォーマット
 ├ 小数値のフォーマット
 ├ 九九の表のフォーマット

例外処理
 ├ printStackTrace()
 ├ NullPointerException
 └ NumberFormatException
月別アーカイブ
カテゴリ
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。