Двойное умножение чисел без точности и запятых - PullRequest
0 голосов
/ 18 ноября 2011

у меня есть массив, двойной массив, как ...

Double my_array = new Double[] {6272640.0, 43560.0, 4840.0, 0.0015625, 4046856422.400000095, 40468564.223999999, 4046.856422400, 0.004046856, 1.0, 0.404685642};

и в моей программе я хочу умножить каждый из этих элементов на некоторые целочисленные значения ... который я принимаю через переменную n.

Я сделал это в своей программе как ...

for(int 1=0;i<my_array.length;i++)
{
my_array[i] = n*my_array[i];
}

когда я пытаюсь напечатать результат, я получаю значение в виде экспоненты ... как, 3.23E и т. д. и т. д. ......

Мне нужен результат в виде двойного значения до 8 десятичных знаков ...

Что я должен сделать, чтобы получить его

Ответы [ 6 ]

5 голосов
/ 18 ноября 2011

Вы должны отформатировать вывод.

http://docs.oracle.com/javase/tutorial/java/data/numberformat.html (общее объяснение) http://download.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html (символы форматирования)

double yourDouble = 0.1234567890;
DecimalFormat myFormatter = new DecimalFormat("0.00000000");
System.out.println(myFormatter.format(yourDouble));

Должно напечатать "0.12345678".

1 голос
/ 18 ноября 2011

попробуйте так

java.text.DecimalFormat df = new java.text.DecimalFormat("###.########"); // define here how much you want precision
for(int i=0;i<my_array.length;i++) 
  System.out.println(df.format(my_array[i]));
0 голосов
/ 24 ноября 2011

Я изменил свой двойной массив на массив String, как

String my_array[];
my_array = new String[] {"1.006944444","6.45160645160", "0.00000326701", "0.0076001595"};

// then used my for loop like

BigDecimal b1 = new BigDecimal(n);
for(int 1=0;i<my_array.length;i++)
{
BigDecimal b2 = new BigDecimal(Double.parseDouble(my_array[i]));
BigDecimal result = b1.multiply(b2);
System.out.println(result.doubleValue);
}

, просто проверьте его самостоятельно.как я только что описал логику, у моего цикла for было гораздо больше дел ..

0 голосов
/ 21 ноября 2011

Проверить этот сайт ...

http://www.jguru.com/faq/view.jsp?EID=1307290

0 голосов
/ 18 ноября 2011

Попробуйте это:

double value = X.XX;
DecimalFormat decimalFormat = new DecimalFormat(); 
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator('.'); // if needed
symbols.setGroupingSeparator('\u0020'); // if needed
decimalFormat.setDecimalFormatSymbols(symbols);

decimalFormat.setMaximumFractionDigits(8); // or any other
decimalFormat.setMinimumFractionDigits(8); // or any other
decimalFormat.setRoundingMode(RoundingMode.HALF_EVEN); // if needed
return decimalFormat.format(value);
0 голосов
/ 18 ноября 2011

делает

String str = String.valueOf(double d);

решить проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...