Monday, June 13, 2016

හත්වන පාඩම.(BigInteger,BigDecimal)

මන් කිව්වනේද අර ලොන්ග්,ඩබල් කියන ප්‍රිමිටිවෙ ටයිප් වල පරාසයක් ගැන.ඒ වගේම
දැන් තමයි ඒ පරසයෙන් එහා තියන වැලියු එක්ක ඔපෙරේෂන් කරන වෙලාව.

මුලින්ම අපි පොඩ්ඩක් package ගැන බලමු.
 අපි ජාවා වල තියන package පාවිච්චි කරාම  අපිට ඒවගෙන් ගොඩක් ලේසියෙන් ප්‍රෝග්‍රෑම් එක කරගන්න පුලුවන් වෙනව.මේ package කියන්නෙ ජාවා වල pre programed class වල එකතුවක්.ඒ කියන්නෙ අපි මුල ඉදලම හැම කෝඩ් එකක්ම ලියන්න ඕනි නෑ මේ හන්ද.ඒ package වල තියන classes call කරල ඒවගෙ තිඅයන pre defined මෙතඩ් පාවිච්චි කරල  අපේ වැඩ ලේසි කරගන්නව.ඉතින් තේරෙනව නේද ඒ package import  කරන්න තමයි දැන් යන්නෙ කියල.

ඔයලට ඕනි විදියට  package හදන විදියත් ඉදිරියේදි බලමු.

සමහර input  ,user කෙනෙක්ගෙන් read කරගන්න.ප්‍රින්ට් එකක් දෙන්න.හැමදේකටම වගෙ මේ package
ඕනි වෙනව.

System.out.println(); අයත් වෙන්නෙ lang package එකට.මේක අමුතුවෙන් import කරන්න අවශ්‍ය නෑ.මේ package එක නිකන්ම import වෙනව අපි class එකක් හදනකොට.අනෙක් සමහර ඒවනම් import කරන්න වෙනව.

අපි user ගෙන් input read කරනකොට util package එක බාවිත කරනව.ඉදිරියේදි package ගොඩක් import 
කරන programe හමුවෙනව.

ඇයිද දන්නවද අපිට ඕනි වෙනකොට විතරක් import කරන්නෙ.සේරම එකපාර claas එක හදනකොට import උනොත් වෙන්නෙ නිරපරාදෙ අපි processing power එක,memory use කරනෙක වෙනව.ඒක වලක්වන්න තමයි ඕනි package එක ඕනි උනාම import කරන්නෙ.


package import කරන්කොට අපි class නේම් එකට උඩින් import කරන package එකේ ස්ටේට්මන්ට් එක ලියන්නෙ.අපිට එකපාර package ගනනාවක් උනත් import කරන්න පුලුවන්.

දැන් අපි BigInteger class එකෛ BigDecimal class එකයි import කරගමු.

import java.math.BigInteger;
import java.math.BigDecimal;
public class BIgNumber
 {
          public static void main(String[] args) 
          {
          BigInteger b= new BigInteger("133");
          BigInteger c=new BigInteger("6");
          BigInteger d1=b.add(c);
          //BigInteger d11=b.add(new BigInteger("6"));
          BigInteger d2=b.subtract(c);
          BigInteger d3=b.multiply(c);
          //BigInteger d33=b.multiply(new BigInteger("6"));
          BigInteger d4=b.divide(c);
          BigInteger d5=b.remainder(c);
          System.out.println(d1);
          System.out.println(d2);
          System.out.println(d3);
          System.out.println(d4);
          System.out.println(d5);
         
          BigDecimal e= new BigDecimal("12.9");
          BigDecimal f=new BigDecimal("4.3");
          BigDecimal g=e.divide(f);
          System.out.println(g);
          System.out.println(e.divide(f));
         
          }
}
මෙතන පොඩි ගනන් use කරාට ඔයාල ලොකු නම්බර් දල බලන්න 45645645456465456465 වගෙ. 
මෙන්න මන් import කරගත්ත  විදිය  hightlight කරල තියෙන්නෙ.java math package එකේ BigInteger class එකයි ,BigDeimal class එකයි.
class  එක සේව් කරල රන් කරම එන output බලන්න.comment දාල තියන ඒවගෙ comment අයින් කරල ඔපරේෂ්න් කරල බලන්න.

BigInteger  හදුන්වනකොට  ඒව define කරන විදිය තේරුම්ගන්න. පේනවද  "" පාවිච්චි කරල කියල හරියට String වල වගේ.මෙතනදි අපි දෙන වැලියු එකේ String එකක් තමයි use කරන්නෙ.මොකද String වලදි දිග length  එකක් පාවිච්චි කරන්න පුලුවන් නිසා.

BigInteger   class එකෙ pre defined මෙතඩ් ටිකක් තමයි add,subtract,multiply,divide,remainder කියන මෙතඩ්.

දශම ඕනි නම් අපි Use කරන්නෙ BigDecimal.
මේ BigDecimal වලදි පොඩි අව්ලක් තියනව. 16  4.5 බෙදුවම 3.55555555555555..
එනවනෙ.එතකොට සමාවර්ත වෙනවනෙ.මේ BigDecimal වලදි මේ විදියට devide මෙතඩ්  එක පාවිච්චි කරාම අවුට්පුට් එක දෙන්නෙ නෑ.මෙහෙම බෙදනකොට දශම ස්තාන කීයක් ඕනිද කියල දුන්නොත් හරිනෙ.

BigDecimal e= new BigDecimal("123");
BigDecimal f=new BigDecimal(33);
System.out.println(e.divide(f,4,BigDecimal.ROUND_UP));

මෙන්න ට්‍රයි කරල බලන්න.මෙතනදි දශම ස්තාන 4 කට තමයි අගය ගන්නෙ.එහෙම ගන්නකොට එතනින් එහ අගයන් ටික අයින් වෙනවනෙ.එතනදි අපි ඊලග දශම සංක්‍යාවට round කරනව කියල තමයි මෙතනදි කියන්නෙ.
System.out.println(e.divide(f,4,BigDecimal.ROUND_DOWN));

මෙහෙමත් කරන්න පුලුවන්.

මේ BigInteger වලයි BigDecimal වලයි තව මෙතඩ් ගොඩක් තියනව.දැනට මේ ටික බලන්න.

System.out.println(e.equals(f));
මේකෙන් බලන්නෙ ඒ නම්බර් දෙක සමනද කියල.සමනයි නම් true නැත්නම්  false ප්‍රින්ට් වෙනව.

ඉස්සරහට String වල මෙතඩ් කරාම ඒවගෙ තියන සමහර  මෙතඩ් පවිච්චි කරන්න පුලුවන් මේ නම්බර් එක්ක.





No comments:

Post a Comment