JavaRush /Blog Jawa /Random-JV /Angka Bunder ing basa Jawa

Angka Bunder ing basa Jawa

Diterbitake ing grup
Nomer titik ngambang (ngambang, dobel) digunakake nalika ngitung ekspresi sing mbutuhake presisi desimal. Akurasi dhuwur asring dibutuhake ing akuntansi lan operasi komputasi liyane. Angka Bunder ing basa Jawa - 1Nanging apa kita kudu tansah "buntut" nomer dawa sawise titik desimal? Mungkin akurasi telung bagean nyata cukup kanggo kita? Lan kita wareg karo pilihan iki, carane mlaku nindakake rounding? Iki persis apa sing bakal kita pirembagan dina iki: kita bakal ndeleng cara kanggo ngubengi angka ing Jawa .

Format string

Minangka cara pisanan, kita bakal katon ing babak pindho:
double value = 34.766674;
String result = String.format("%.3f",value);
System.out.print(result);//  34,767
Akibaté, kita bakal ngowahi format floating point nomer 34766674 kanthi presisi 3 panggonan desimal , amarga ing instruksi format kita nemtokake telung panggonan desimal "%.3f. Banjur, %f nalika ngowahi format string nuduhake jinis floating point. nomer, kang kalebu jinis data pindho lan ngambang ing Jawa. Ing conto ing ndhuwur, kita output nilai asil kanggo console. Saiki pitakonan: carane kita bisa shorten iki? Iku prasaja: sampeyan kudu nggunakake printf, kang siji yaiku format + print. Akibaté, conto Kita sadurunge bakal dikurangi dadi:
double value = 34.766674;
System.out.printf("%.3f",value);
Saliyane metode iki , conto metu saka kelas PrintStream uga duwe metode format, sing bisa digunakake kanthi cara sing padha:
double value = 34.766674;
System.out.format("%.3f",value);
Rounding dumadi ing mode HALF_UP - menyang nomer sing luwih cedhak karo sing dipotong (kanggo 0 utawa 10). Yen nomer kasebut padha karo jarak (ing kasus 5), banjur dibunderaké munggah. Tuladha:
String firstResult = String.format("%.3f",7.0004);// 7,000
String secondResult = String.format("%.3f",7.0005);// 7,001
String thirdResult = String.format("%.3f",7.0006);// 7,001
Kita bakal ngrembug mode bunder kanthi luwih rinci ing ngisor iki. Angka Bunder ing Jawa - 2

DesimalFormat

Pilihan liyane yaiku nggunakake kelas DecimalFormat . Iki dirancang kanggo ngowahi format apa wae ing Jawa, dadi integer utawa floating point. Nalika kita instantiate DecimalFormat, kita bisa pass string format. Iku bakal nuduhake carane akeh panggonan desimal kanggo format kanggo input. Iki minangka conto kita nggunakake DecimalFormat :
double value = 34.766674;
DecimalFormat decimalFormat = new DecimalFormat( "#.###" );
String result = decimalFormat.format(value);
System.out.print(result);//34,767
Baris #.### minangka pola sing nuduhake yen kita ngowahi format nilai sing dilewati dadi 3 panggonan desimal. Kanggo ngganti pola sawise obyek DecimalFormat digawe, sampeyan bisa nggunakake cara applyPattern lan applyLocalizedPattern :
DecimalFormat decimalFormat = new DecimalFormat("#.###");
decimalFormat.applyPattern("#.#");
decimalFormat.applyLocalizedPattern("#.#####");
Nanging dina iki kita ngomong babagan pembulatan, ta? Nalika truncating nomer karo panggonan desimal ngluwihi pola kasebut, DecimalFormat babak nomer munggah yen nomer truncated pungkasan luwih saka 5. Nanging apa yen nomer 5? Pranyata iku persis ing tengah antarane integer paling cedhak. Apa banjur? Ing kasus iki, nomer sadurunge dijupuk menyang akun. Yen genap, pembulatan ditindakake:
DecimalFormat decimalFormat = new DecimalFormat("#.###");
String result = decimalFormat.format(7.4565);
System.out.println((result));// 7,457
Yen aneh, ora ditindakake:
DecimalFormat decimalFormat = new DecimalFormat("#.###");
String result = decimalFormat.format(7.4575);
System.out.println((result));// 7,457
Ana prabédan tipis antarane format angka floating point nggunakake String.format () lan DecimalFormat.format (). Sing pisanan bakal tansah nyithak nol mburi sanajan ora ana bagean pecahan. contone:
String firstResult = String.format("%.3f", 7.000132);
System.out.println((firstResult)); // 7.000

DecimalFormat decimalFormat = new DecimalFormat("#.###");
String secondResult = decimalFormat.format(7.000132);
System.out.println((secondResult));  // 7
Nalika kita bisa ndeleng, nalika format nomer 7.000132 kanggo telung panggonan desimal, format String () cara bakal output 7.000, nalika DecimalFormat format () cara output 7. Sing, sampeyan bisa milih String.format () utawa DecimalFormat. ) gumantung apa sampeyan kudu nul mburine utawa ora. Nggunakake cara sing diterangake ing ndhuwur, kita nampa asil ing wangun senar. Ayo goleki cara kanggo mbalekake nilai numerik.

Matématika

Sampeyan ora bisa sebutno kelas khusus sing dirancang kanggo macem-macem operasi aritmetika kanthi nomer - Math . Angka Bunder ing basa Jawa - 3Kelas iki uga duwe cara kanggo dibunderaké, nanging ora kaya sing wis diterangake, padha ora ngidini sampeyan nyetel nomer tartamtu saka panggonan desimal, nanging babak kanggo integer:
  • Math.ceil () dibunderaké menyang integer paling cedhak, nanging bali ora jinis integer, nanging pindho:

    double value = 34.777774;
    double result = Math.ceil(value);
    System.out.println((result)); //35.0

    Sanajan kita duwe 34.0000000, sawise nggunakake Math.ceil kita isih bakal entuk 35.0.

    Math.floor () babak mudhun kanggo integer paling cedhak, uga ngasilake asil minangka pindho:

    double value = 34.777774;
    double result = Math.floor(value);
    System.out.println((result)); //34.0

    Maneh, sanajan kita duwe nilai 34.999999999, banjur sawise nggunakake Math.floor bakal entuk 34.0.

  • Math.round () - babak menyang integer paling cedhak, menehi asil int:

    double value = 34.777774;
    int result = Math.round(value);
    System.out.println((result)); //35

    Yen nomer kita 34,5, dibunderake dadi 35, nanging yen kurang saka 34,499, angka kasebut dipotong dadi 34.

    Supaya ora mung Cut mati kabeh bagean nyata, nanging kanggo ngatur proses iki kanggo nomer tartamtu saka panggonan desimal lan ing wektu sing padha babak, nomer dikali 10 ^ n (10 kanggo daya n), ngendi n iku padha karo nomer panggonan desimal perlu. Sawise iki, dheweke nggunakake sawetara metode kelas Matematika kanggo muter, banjur dibagi 10 ^ n maneh:

    double value = 34.777774;
    double scale = Math.pow(10, 3);
    double result = Math.ceil(value * scale) / scale;
    System.out.println((result)); //34.778

    Math.pow - njupuk loro bantahan. Ingkang kapisan inggih punika angka, ingkang angka kalih inggih punika daya ingkang kedah dipununggahaken.

Babak karo BigDecimal

BigDecimal minangka kelas sing ngidini sampeyan nggarap nomer floating point. Utamane, fitur utamane yaiku bisa nyimpen nomer pecahan kanthi dawa sewenang-wenang (yaiku, ora ana watesan ing sawetara nomer kasebut). Kajaba iku, kelas iki nyimpen macem-macem cara kanggo pangolahan aritmetika, kalebu pembulatan. Kelas obyek iki bisa digawe kanthi nyetel konstruktor kanggo pindho, senar kanggo nampilake nomer floating point, pindho lan MathContext , lan ing. MathContext minangka kombinasi saka RoundingMode lan nomer sing nggambarake jumlah total digit ing nilai sing digoleki. Babagan aturan RoundingMode: DOWN - dibunderaké menyang nul. UP —bunder saka mode nul. CEILING - dibunderaké menyang tanpa wates positif. FLOOR - dibunderaké menyang tanpa wates negatif. HALF_UP - Babak menyang "tanggi cedhak" yen loro tanggi ora padha (yaiku, nalika nomer dibunderaké 5). Ing kasus iki, dibunderaké munggah. HALF_DOWN - dibunderaké menyang "tanggane paling cedhak". Yen tanggi loro ora padha, ing kasus iki babak mudhun. HALF_EVEN - Babak menyang "tetangga sing paling cedhak" yen loro tanggane ora padha. Ing kasus iki, babak kanggo malah pepadhamu (kaya ing DecimalFormat diterangake ing ndhuwur). Ora perlu - Digunakake kanggo konfirmasi yen operasi sing dijaluk duwe asil sing bener. Mulane, rounding ora dibutuhake. Tuladha:
MathContext context = new MathContext(5, RoundingMode.HALF_UP);
double value = 34.777554;
BigDecimal result = new BigDecimal(value, context);
System.out.println(result); //34.778
Saliyane kemampuan kanggo nyetel aturan babak ing konstruktor, BigDecimal ngijini sampeyan kanggo nyetel mode babak sawise Kayata digawe. Kanggo nindakake iki, gunakake metode setScale , ing ngendi sampeyan kudu nyetel nomer desimal lan aturan pembulatan:
double value = 34.777554;
BigDecimal result = new BigDecimal(value);
result = result.setScale(3, RoundingMode.DOWN);
System.out.println(result); //34.777
BigDecimal uga nduweni variabel int internal sing dirancang kanggo nyetel mode pembulatan ( ROUND_DOWN , ROUND_CEILING , ROUND_FLOOR ...) Iki minangka aturan pembulatan sing padha karo sing ditampilake ing kelas RoundingMode lan digunakake ing setScale :
BigDecimal result = new BigDecimal(value);
result = result.setScale(3, BigDecimal.ROUND_DOWN);
Waca liyane babagan kelas BigDecimal ing artikel iki .
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION