たなかのJava日記

どんなことをやったか(学んだか)、どこで詰まったか(わからなかったか)、どこで工夫したかの記録です。

Day4,アルゴリズムを、はじめよう

■時間

3.5時間

 

■行ったこと

1,書籍「プロになるJava」p94~101

BigDecimalクラスの復習

・SwingによるGUI(ウィンドウ表示、入力領域の表示)

 

2.書籍「アルゴリズムを、はじめよう」p0~59

アルゴリズムの基本

・変数と配列

 

■課題
前日と変わらず
・前値インクリメントと後置インクリメントの説明
・参照型について

 

■コメント

今の時代、アルゴリズムがわからなくても何とかなってしまいます。

しかし、それでもアルゴリズムを学ぶ必要がある理由が記載されており、モチベーションが上がりました。

 

■その他

特になし

 

 

-------------------

以下はメモです

 

p91,

基本型(intなど)以外は全てオブジェクトになる
オブジェクトにはメソッドが呼び出せる
基本型の値にはメソッドは呼び出せない


BigDecimalオブジェクト生成時の注意

 

new BigDecimal(0.05)

 

上記のようにコンストラクタに実数を渡すと、誤差が発生する。
理由としては、数値を書くときは10進数を使うが、実数は内的に2進数で扱われるため(10進数の0.05という実数は2進数で正確に表せない)


解決策として、文字列を渡す

⇒new BigDecimal("0.05")


valueOfメソッドで実数を渡す

⇒BigaDecimal.valueOf(0.05)
valueOfメソッドは、doubleの値を一旦文字列に置き換えてからBigDecimalオブジェクトを生成する。
しかし、double値では15桁までしか正確な値を扱えない。
そのため、書いた通りの値を扱う時はnewを使用し文字列を渡してオブジェクトを生成する方が間違わずに済む。
金額の計算などで注意が必要。