Loading...
Hristo_Penchev avatar Hristo_Penchev 389 Точки

[Technical Issue] Java Basics - Форматиране на число с плаваща запетая - как да отпечатаме точния брой знаци?

Здравейте,

Не мога да открия как да форматирам числото по начин, по който да ми печата точния брой символи след запетаята. Примерно искам ако числото е 1, да ми пиечата 1, не 1.0. А ако е 2.564 да излиза 2.564. Не е вариант да задам точна прецизност до символ. Някой има ли представа? Благодаря предварително.

0
Java Advanced 11/09/2014 14:55:54
Anonymous:
Проблемът е разрешен.
vdoynov avatar vdoynov 40 Точки

Convert-ваш на string и там започваш да гледаш отзад напред дали няма нула някъде.

0
salih1f1 avatar salih1f1 188 Точки

Здравей. Все пак виж това. Мисля че ако използваш 0.### примерно би трябвало да стане. А и под "точният брой" какво имаш в предвид?

1
10/09/2014 22:13:29
Dopey avatar Dopey 7 Точки

DecimalFormat formatter= new DecimalFormat("0.###");

System.out.println(formatter.format(myDouble));

 

Пробвай това!

1
dscott avatar dscott 1 Точки

Обявяваш числото, масива... като BigDecimal, използваш .toPlainString();

Нещо такова -> 

double num = 12345678;
System.out.println(num);
BigDecimal number = new BigDecimal(num);
System.out.println(number.toPlainString());

 

0
KostadinStefanov avatar KostadinStefanov 32 Точки

да и аз си спомням че бе голяма глупост това минаваше се през BigDecimal като че ли ...

http://stackoverflow.com/questions/14287812/get-a-plain-string-representation-of-a-double-without-going-through-bigdecimal

на кратко му отговарят - не няма друг начин :) т.е в твоя случай когато не можеш да дадеш форматиране

0
10/09/2014 22:53:50
quickben avatar quickben 966 Точки

И аз се сблъсках скоро с този проблем и накрая реших да си направя метод който просто да извлича число от входни данни(стринг) и да го връща пак като стринг, като по този начин се запазва форматирането, сиреч когато числото е int си излиза като инт и обратното.

Ето го метода -> ЦЪК (не съм 100% сигурен за regex pattern-a, засега ми върши работа).

Проблема с форматирането според мен идва от природата на самия тип данни който се опитване да форматираме.

double floatNumber = 123.123D;
int integerNumber = (int)floatNumber;
System.out.println(integerNumber);

Когато кастнем 123.123 от double към int, това което е става е, че променливата integerNumber знае, че е от тип int и следователно когато почне да чете числото 123.123 и стигне до точката четенето спира и се връща целочислена стойност(сиреч int каквато е променливата). Историята от floating point number към integer number е същата. Аз поне така ги разбирам нещата по това което съм чел, ако нещо се бъркам някой да каже. 

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