Loading...
dimipan avatar dimipan 30 Точки

как да отпечатваме double или float числа на конзолата без последните излишни нули и дори без десетичната точка (запетая) ?

Въпросът ми е, има ли някакъв удобен начин за форматиране, при отпечатването double или float числа на конзолата, така че, последните цифри след десетичния раздилител, ако са нули да не се изписват, а дори и десетичната точка, ако няма други цифри?

Например:

4.5087000   -->    4.5087

15.023056   -->   15.023056

2.0000000   --->   2

-8.3810000   -->  -8.381

.....

Благодаря Ви, предварително за оказаното съдействие!

Тагове:
0
Module: Java Advanced 25/09/2017 12:16:40
Ivakis avatar Ivakis 98 Точки
Best Answer

Здравей,

има начин, разбира се :) 

Трябва да използваш DecimalFormat. Инициализира се по следния начин - DecimalFormat df = new DecimalFormat("#.########");

това в кавичките е шаблон, по който ще се форматира числото. Да кажем имаш число 4.50 след форматиране ще изпечата -> 4.5

при число 4.56839200000 -> 4.568392, просто където хване 0 след десетичната запетая, там реже. 4.00 -> 4 Без точка. 

Чрез шаблона може да задаваш максималната дължина на изходното число, съответно ако имаш задание да закръглиш до втория знак, обаче ако са нули след точката, да не ги пишеш, шаблона ще е "#.##". 
 

За да форматираш числото - > String result = df.format(number), методът формат връща стринг. 
 

Успех :)

1
25/09/2017 19:17:01
boyan_georgiev avatar boyan_georgiev 62 Точки

В допълнение към отговора на колегата, имай в предвид че класът DecimalFormat освен форматиране извършва и закръгляне.

Пример: форматираш 5,69990000 със шаблон "0.####" ще върне като резултат "5,6999", докато форматиране със шаблон "0.##" връща "5,7". Би било добре да прочетеш и документацията към класа - https://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html

1
todor0912 avatar todor0912 35 Точки

Можеш да използваш Space holders тоест примерно %.2f закръгля до втория знак и можеш съответно да сменяш числото в зависимост от знака, в случая ако искаш да е без числа след запетаята закръгляш до %.0f тоест да няма числа след нея в google има много статий и лист със всички Space holders можеш да потърсиш спестяват много писане и са много лесни за използване.

if (num < 10) {
    System.out.printf("Number is %.2f%n", num);

Ето най лесния възможен пример , като трябра да се съобразиш , че не е println a printf, иначе ще ти изведе грешка и запетая преди num  в случая. %n e space holder за разтояние и също е полезен.

-1
dimipan avatar dimipan 30 Точки

Здравей, todor0912

Пледполагам, не си прочел внимателно темата и въпроса ми.

Това, за което пишеш, се отнася за доста по-различен тип форматиране на float и double числа, който няма нищо общо с премахването на последните излишни нули при отпечатването им.

С %.2f, %.3f, %4f, %0f.... просто се фиксират предварително зададен брой цифри от float и double числа  за отпечатване, след десетичния разделител, като се използва и закръглане:

4.5087000   -->  %.2f   ->  4.51,    %.3f   ->  4.509,     %.5f  ->  4.50870;

15.023056   -->   %.1f   ->  15.0,  %.2f   ->  15.02,     %.4f  ->  15.0231;

2.0000000   --->   %.1f   ->  2.0,    %.2f   ->  2.00,      %.3f   ->   2.000,      %.0f    ->   2;

-8.3810000   -->   %.1f   ->  -8.4,    %.2f   ->  -8.38,   %.3f   ->   -8.381,   %.5f  ->  -8.38100;

 

Както виждаш, когато при изчисляване в задачата се изисква, резултата да се отпечата число, само със значещите цифри, няма как просто да използваш String.format("%.2f", doubleNumber);

Правилният и най-лесен начин, наистина се оказва класа DecimalFormat(), разгледай предишните постове!

Все пак, благодаря за вниманието smiley !

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.