Pereiti prie turinio

JAVA - padorus skaiciai


Rekomenduojami pranešimai

Tarkim turim nezmoniskai skaiciu, 465425156489756456, kai bandai isspausdinti su JAVA ji, ismeta 2.546E78 ir t.t. Kaip padaryti, kad ismestu padoru skaiciu kaip ir yra? Tarkim ant C++ tai butu:

 

double a = 465425156489756456;

cout << fixed << a << endl;

 

Kaip su JAVA?

Ieskojau googlej, nerandu :/

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Su skaičiumi, kurį pateikei, nepažaisi turbūt taip lengvai, nes tiesiog jį suapvalins. Tačiau su šiek tiek mažesniais viskas išeitų kuo puikiausiai, taikant printf() metodą. Štai gali remtis tokiu pavyzdžiu:

class MainClass {
public static void main (String[] args) {
	//Suformatuotas atvaizdavimas
	double x = 465425156489756456.;
	System.out.printf("%.0f\n",x);
	//Paprastas išvedimas su println metodu
	double a = 4654251564897564.;
	System.out.println(a);
}
}

Rezultatas buvo toks:

465425156489756480

4.654251564897564E15

Kaip iš pirmos rezultato eilutės matyti, tiesiog suapvalina rezultatą. Bent jau taip yra, man naudojantis Eclipse IDE.

Redagavo topsas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

import java.math.BigInteger;
public class as {
 public static void main(String[] args) {
   BigInteger bigInt = new BigInteger("28763495870182034732945623485620498234720945693456");
   System.out.println(bigInt);
 }
}

 

Output:

28763495870182034732945623485620498234720945693456

 

Bet kai tai padarysiu, negalsiu zaisti su tuo skaicium, t.y. negalesiu atlikti jokiu veiksmu.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

daghost paminėta BigInteger klasė turėtų saugoti metodus, iš kurių dalis leistų atlikti matematinius veiksmus. Patikrinau su Eclipse - turi, ir tie metodai visai neblogi. Kitaip sakant, reikės naudotis tiesiog BigInteger klasės metodais, tokiais kaip add(), subtract(), multiply() vietoje paprasčiausių aritmetinių operacijų ženklų. Štai pavyzdys:

import java.math.BigInteger;

public class MC {
public static void main(String[] args) {
	BigInteger bigInt1 = new BigInteger("28763495870182034732945623485620498234720945693456");
	BigInteger bigInt2 = new BigInteger("98763495870182034732945623485620498234720945693456859");
	System.out.println(bigInt1.add(bigInt2));
	System.out.println(bigInt1.multiply(bigInt2));
	System.out.println(bigInt1.subtract(bigInt2));
}
}

 

O rezultatas toks būtų:

98792259366052216767678569109106118732955666639150315

2840783405586721398784782768763873871614392492930661453416273475992994618934612617414304378013574614704

-98734732374311852698212677862134877736486224747763403

Redagavo topsas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...