JavaRush /Blog Jawa /Random-JV /Format output angka ing Jawa

Format output angka ing Jawa

Diterbitake ing grup
Halo kabeh! Asring cara kita teka karo nomer sing kudu ditampilake ing sawetara format khusus. Iku misale jek kaya bab cilik, nanging carane sampeyan bakal ngleksanakake tugas iki? Format output angka ing Jawa - 1Kita ngajak sampeyan mikir babagan iki dina iki. Pisanan, kanggo nyilem format angka ing Jawa, ayo elinga metode format kelas String : format String statis publik (Format String, Obyek ... args) - ngasilake string sing diformat saka string format nggunakake argumen args sing isih ana . Lan mung conto:
String str = String.format("Hi - %s! How are you %s?", "Sasha", "At work");
System.out.println(str);
Akibaté, kita bakal entuk output ing console:
Hello Sasha! Kepiye kahanan ing karya?

printf lan cara format

String.format () ora mung cara kanggo format senar. Analoge yaiku System.out.printf() lan System.out.format(); . Dadi, kita bisa ngganti kode sadurunge karo:
System.out.printf("Hi - %s! How are you %s?", "Sasha", "At work");
utawa
System.out.format("Hi - %s! How are you %s?", "Sasha", "At work");
Output ing console bakal tetep padha. Bentenipun mung sing cara iki langsung nampilake Nilai ing console, Boten kados String.format () . Nanging aku String.format () luwih, awit kita ora tansah kudu nampilake asil ing console, supaya kita bakal nggunakake cara iki luwih. Ayo bali menyang conto kita. Apa sing kita deleng? Lan kasunyatane yaiku ing panggonan sing ana karakter - %s , garis - "Sasha" lan "ing karya" dilebokake . Kepiye carane bisa mbantu kita ing pembangunan? Mbayangno yen sampeyan duwe teks cithakan gedhe, nanging ing sawetara panggonan sampeyan kudu nglebokake nilai sing bisa beda-beda lan teka minangka bantahan saka njaba. Iki ngendi format iki migunani. Penentu format diwiwiti kanthi tandha persen, %, lan dipungkasi karo karakter sing nuduhake jinis argumen sing bakal diformat. Lan, kaya sing sampeyan ngerti, %s digunakake kanggo nglebokake obyek - strings. Nanging yen kita nyoba nglebokake, contone, dobel menyang panggonan ing ngendi obyek string didaftar:
String str = String.format("Hi - %s! How are you %s?", 55.6, "At work");
iki uga bakal bisa. pindho bakal dibuwang menyang senar lan kita bakal entuk:
Sugeng - 55.6! Kepiye kahanan ing karya?
Saliyane senar lan angka floating point, ana jinis liyane ing Jawa, ta? Dadi ayo goleki kabeh arsenal:
Jinis nilai kanggo format Tuladha
%s Sembarang jinis sing bakal dibuwang menyang senar
String.format("Hi %s!","world")
asil:
Hello World!
%b Jinis apa wae sing bakal dibuwang menyang boolean : true - yen nilai ora null, false - yen null
String.format("Hi %b!",null)
asil:
Hello palsu
%h Sampeyan bisa ngliwati obyek apa wae, sing bakal dibuwang menyang string nilai heksadesimal saka metode hashCode ()
String.format("Hi %h!","world")
asil:
Sugeng 106c44!
%c Digunakake kanggo nemtokake karakter Unicode ( char )
String.format("Hello m%cr!",'And')
asil:
Hello World!
%d Integer ditemtokake ( int. byte, short, int, long, BigInteger )
String.format("I'm already %d!",20)
asil:
Aku wis 20!
%f Digunakake kanggo nemtokake nomer floating point
String.format("PI is - %f!", 3.14159)
asil:
Angka PI yaiku - 3.141590!
%e Nomer titik ngambang ing notasi ilmiah
String.format("PI is - %e!", 3.14159);
asil:
Nomer PI yaiku - 3.141590e+00!
%a Nomer titik ngambang bakal dituduhake kanthi heksadesimal
String.format("PI is - %a!", 3.14159)
asil:
Nomer PI yaiku - 0x1.921f9f01b866ep1!
%x Integer liwati ( int. byte, short, int, long, BigInteger ), asil format bakal karakter karo nomer diwenehi ing tabel ASCII
String.format("I'm already %x!",25)
asil:
Aku wis 19!
%o Integer ( int. byte, short, int, long, BigInteger ) ditampa lan bakal dituduhake minangka nomer oktal
String.format("I already %o!",25);
asil:
Aku wis 31!
%t Ater-ater kanggo konversi tanggal lan wektu. Gendéra tambahan dibutuhake kanggo format
String.format("Today is %tA",new Date())
asil:
Dina iki dina Setu
%n Pemisah garis khusus platform. Analog\n
String.format("Hello %n Hello")
asil:
Hi Hi
Ayo nggunakake format sing luwih cocog kanggo dobel :
String str = String.format("The distance from Kyiv to Odessa is %f. Not so short, is it?", 475.4d);
System.out.println(str);
Output konsol:
Jarak saka Kyiv kanggo Odessa yaiku 475.400000. Ora sethithik, ta?
Kaya sing wis sampeyan ngerteni, %f bakal dadi penentu sing luwih cocog kanggo nomer floating point, sing kalebu jinis data kaya dobel lan float ing Jawa. Kanthi specifier iki kita bisa ngowahi nomer floating point:
String str = String.format("The distance from Kyiv to Odessa is %.2f. Not so short, is it?", 475.4d);
Nglebokake .2 menyang specifier iki bakal ngethok nomer desimal dadi loro, menehi output:
Jarak saka Kyiv kanggo Odessa yaiku 475.40. Ora sethithik, ta?
.2 ora mung Tweak kanggo specifiers. Kombinasi saka subset kasebut diarani instruksi . Format output angka ing Jawa - 2Bentuk umum instruksi kasebut kaya ing ngisor iki:
%[argument_index][flags][width][.precision]type specifier
Saiki ayo decipher kabeh ing urutan:
  • [argument_index] minangka integer sing nuduhake posisi ing dhaptar argumen. Contone, pranala menyang argumen pisanan yaiku $1, pranala menyang argumen kapindho yaiku $2, lsp. Yen posisi ora ditemtokake, argumen kasebut kudu padha karo urutan sing dirujuk ing string format.
  • [flags] minangka karakter khusus kanggo format. Tuladhane:
    • + flag nuduhake yen nilai numerik positif, iku kudu kalebu + tandha
    • - tegese kempal asil ing sisih kiwa
    • , Nyetel pemisah sewu kanggo integer
  • [jembaré] iku integer desimal positif sing nemtokake jumlah minimal karakter sing bakal output. Yen nomer iki didhisiki 0, karakter sing ilang bakal diisi karo 0, yen ora ana 0, banjur nganggo spasi.
  • [.akurasi] minangka integer non-negatif sing didhisiki titik. Biasane digunakake kanggo matesi jumlah karakter. Prilaku tartamtu gumantung ing jinis specifier tartamtu.
Aku uga pengin Wigati sing kabeh unsur ing ndhuwur instruksi opsional, lan kabeh bakal bisa tanpa wong. Minangka conto nggunakake subsetting, ayo bayangake yen kita butuh output tartamtu saka nomer Pi:
String str = String.format("%1$+09.5f", 3.1415926535897);
System.out.print(str);
Lan miturut, output ing console:
+03.14159
Koyone gampang, ta? Nanging nalika nerangake format nomer, sampeyan ora bisa nglirwakake DecimalFormat . Ayo ngerteni apa tegese iki.

DesimalFormat

DecimalFormat minangka kelas kanggo ngowahi format angka ing Jawa, dadi integer utawa floating point. Nalika obyek DecimalFormat digawe , sampeyan bisa nemtokake cithakan kanggo format nomer mlebu langsung ing konstruktor. Iki minangka conto kita nggunakake DecimalFormat :
DecimalFormat dF = new DecimalFormat( "#.###" );
double value = 72.224463;
System.out.print(dF.format(value));
Output konsol:
72,224
Baris #.### minangka pola sing nuduhake yen kita ngowahi format nilai sing dilewati dadi 3 panggonan desimal. Apa simbol liyane sing kasedhiya kanggo pola? Ing ngisor iki sawetara:
  • # - digit, nul anjog diilangi;
  • 0 - digit tansah ditampilake, sanajan nomer kasebut kurang digit (ing kasus iki, 0 ditampilake);
  • . - tandha pamisah desimal;
  • , - tandha klompok separator (contone, separator ewu);
  • ; - misahake format;
  • - — menehi tandha awalan saka nomer negatif;
  • % - multiplies dening 100 lan nuduhake nomer minangka persentasi;
  • ? - multiplies dening 1000 lan nuduhake nomer ing ppm;
  • E - Pisah mantissa lan eksponen kanggo notasi ilmiah.
Ayo deleng sawetara conto:
System.out.println(new DecimalFormat( "###,###.##" ).format(74554542.224463));
Output konsol:
74.554.542.22
System.out.println(new DecimalFormat( "%###.##" ).format(0.723456));
Output konsol:
%72.35
System.out.println(new DecimalFormat( "000.###" ).format(42.224463));
Output konsol:
042.224
Sampeyan ora perlu nggawe obyek DecimalFormat anyar saben wektu kanggo nemtokake cithakan anyar. Cukup nggunakake metode applyPattern lan applyLocalizedPattern :
DecimalFormat dF = new DecimalFormat("###.###");
dF.applyPattern("000000.000");
dF.applyLocalizedPattern("#,#00.0#");
Nalika kita pirembagan bab format nomer floating point, kita cukup kasengsem ing dibunderaké, ta? Dadi, nalika trimming nomer karo panggonan desimal ngluwihi pola kasebut, DecimalFormat babak nomer munggah yen nomer potong pungkasan luwih saka 5. Apa yen nomer potong pungkasan punika 5? Pancen, ing kasus iki, nomer iki persis ing tengah antarane integer paling cedhak. Format output angka ing Jawa - 3Ing kasus iki, nomer sadurunge dijupuk menyang akun. Yen nomer sadurunge malah, dibunderaké wis rampung:
DecimalFormat dF = new DecimalFormat("##.###");
String result = dF.format(56.4595);
System.out.println((result));
Output konsol:
56.459
Yen aneh, ora ditindakake:
DecimalFormat dF = new DecimalFormat("##.###");
String str = dF.format(56.4595);
System.out.println((str));
Output konsol:
56.459
Bentenipun antarane format angka floating titik nggunakake String.format () lan DecimalFormat.format () iku ing kasus pisanan bakal nul mburine, malah yen ora ana bagean pecahan. Tuladhane:
String firstStr = String.format("%.4f", 9.00001273);
System.out.println((firstStr));
Output konsol:
9.0000
DecimalFormat decimalFormat = new DecimalFormat("#.####");
String secondStr = decimalFormat.format(9.00001273);
System.out.println((secondStr));
Output konsol:
9
Nalika sampeyan bisa ndeleng, nalika format nomer 9.00001273 karo akurasi papat panggonan desimal, format () cara kelas String bakal output Nilai 9.0000 , nalika format padha () cara DecimalFormat bakal output 9 .

BigDecimal lan BigInteger

Awit kita wis ndemek topik pembulatan angka ing Jawa, ayo ngomong babagan carane nggunakake kelas BigDecimal kanggo operasi kasebut . Kelas iki fokus kanggo nggarap nomer sing LARGE: amarga nilai dobel lan float maksimal cilik banget. Kelas iki nduweni macem-macem setelan kanggo floating point rounding, uga akeh cara kanggo operasi aritmetika. Nduwe kelas sing padha, nanging fokus ing nggarap wilangan bulat BESAR - BigInteger . Sampeyan bisa maca liyane babagan BigDecimal lan BigInteger ing artikel iki .

Format Tanggal lan Wektu

Mung kasebut ing ndhuwur yen nggunakake format () kelas String sampeyan uga bisa ngowahi format wektu lan tanggal. Format output angka ing Jawa - 4Nah, ayo dideleng kepiye carane. Kaping pisanan, kita pengin ngelingake sampeyan manawa penentu format %t digunakake kanggo tanggal . Kapindho, nalika ngowahi cithakan, gendera format tambahan dibutuhake kanggo saben penentu format tanggal. Mangkene kemungkinan format gendéra kanggo tanggal:
Gendéra Katrangan
%tB Jeneng lengkap sasi, contone, Januari, Februari, etc.
%tb Jeneng sasi sing disingkat, contone Jan, Feb, lsp.
%tA Jeneng lengkap dina minggu, contone, Minggu, Senin
%ta Jeneng sing disingkat dina minggu, contone, Sun, Mon, lsp.
%tY Taun ing format 4 digit, contone 0000 nganti 9999
%ty Taun ing format 2 digit, contone, saka 00 nganti 99
%tm Sasi diformat nganggo nol ing wiwitan, contone 01 nganti 12
%tc Tanggal lan wektu ing format %ta %tb %td %tT %tZ %tY, contone, Sen 17 Feb 03:56:12 PST 2020
%tD Tanggal ing format %tm/%td/%ty
%td Dina sasi kanthi format rong digit, contone 01 nganti 31
%te Dina sasi ing format tanpa anjog 0, contone saka 1 kanggo 31
%tT Wektu ing format 24 jam, contone %tH:%tM:%tS
%tH Jam dina ing format 24 jam, saka 00 nganti 23
%tI Jam dina kanggo format 12 jam, contone 01 nganti 12
%tM Menit ing jam diformat nganggo nol utama, contone 00 nganti 59
%tS Detik ing menit, dumadi saka rong digit, contone, saka 00 kanggo 59
%tZ Singkatan zona wektu, kayata PST, UTC, lsp.
Iki minangka dhaptar sing disingkat gendera format tanggal - ana akeh, kanggo saben rasa. Dhaptar lengkap lan kemungkinan specifiers bisa ditemokake ing link iki . Ayo goleki carane nggunakake iki. Wektu iki kita ora nggunakake String.format () , nanging langsung System.out.printf () .

Tuladha 1

Kajaba iku, kita bakal nyetel basa asil kanthi menehi argumen pisanan kanggo metode kasebut:
Date date = new Date();
System.out.printf(Locale.ENGLISH,"%tB %te, %tY",date,date,date);
Output konsol:
11 Oktober 2020
Tanpa nemtokake basa, basa standar bakal digunakake (contone, aku duwe basa Rusia).

Tuladha 2

Ayo nampilake tanggal sing luwih lengkap:
Date date = new Date();
System.out.printf("%td %tB %tY of %n%tH:%tM:%tS",date,date,date,date,date,date,date);
Lan output ing console:
11 Oktober 2020 13:43:22
Ngliwati obyek Tanggal sing padha karo argumen kaping pirang-pirang ... Ora katon apik banget, ta? Ayo nggunakake subset internal $ kanggo nemtokake argumen sing arep digunakake:
System.out.printf("%1$td %1$tB %1$tY of year %n%1$tH:%1$tM:%1$tS",date);
Output ing console kita ora bakal diganti. Ana cara liyane sing padha menarik kanggo format tanggal. Sampeyan bisa maca babagan iki lan luwih akeh babagan wektu lan tanggal ing basa Jawa ing materi iki . Sing kabeh kanggo dina iki, matur nuwun kanggo manungsa waé!Format output angka ing Jawa - 5
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION