Професионална програма
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 38 Точки

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 974 Точки

И аз се сблъсках скоро с този проблем и накрая реших да си направя метод който просто да извлича число от входни данни(стринг) и да го връща пак като стринг, като по този начин се запазва форматирането, сиреч когато числото е 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