Как преобразовать десятичную точку? - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь сделать калькулятор акций.И, честно говоря, я не знаю, как правильно использовать

DecimalFormat df2 = new DecimalFormat(".##"); 

.

Я пытаюсь изменить значение прибыли до 2 десятичных знаков и не знаю, что мне нужно делать,Кроме того, значение String sellOut вообще не отображается.Не могли бы вы помочь мне разобраться в этом?

import java.util.Scanner;
import java.io.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.text.DecimalFormat;

 public class Assignment
{

public static void main(String args[]) throws IOException
{

File dataFile = new File ("Feb13StockData.txt");
if(!(dataFile.exists()))
{
  System.out.println("invalid file");
  System.exit(0);
}
DecimalFormat df2 = new DecimalFormat(".##");
Scanner fileInput = new Scanner (dataFile);
String stock;
int pp, sp, ns;
double pc, sc;
String sell;
double profit;



//read first student record.
//for(int i = 1; i<= 4; i++)
System.out.println("Stock \t\t"+"PP \t\t"+"SP \t\t"+"PC \t\t"+"SC \t\t"+"NS \t\t"+"sellOut \t\t"+"profit \t\t");
while (fileInput.hasNext()){

stock = fileInput.nextLine();
pp = fileInput.nextInt();
sp = fileInput.nextInt();
pc = fileInput.nextDouble();
sc = fileInput.nextDouble();
ns = fileInput.nextInt();
sell = fileInput.nextLine();
profit = ProfitOut(pp,sp,pc,ns,sc);

printToScreen(stock,pp,sp,pc,sc,ns,sell,profit);


//System.out.println(student + "\t\t" + stYear + "\t\t" + gpa+ "\t\t" + credits);

//discard BOL CHARACTOR
fileInput.nextLine();
}

fileInput.close();
}


 public static void printToScreen(String stockOut, int ppOut, int spOut, double pcOut, double scOut, int nsOut, String sellOut, double profit){

System.out.println(stockOut+ "\t\t" + ppOut +"\t\t" + spOut+"\t\t" +pcOut+"\t\t" +scOut+"\t\t"+ nsOut+"\t\t"+sellOut+"\t\t"+profit );


}
  public static double ProfitOut (int pp, int sp, double pc, int ns, double sc)
  {
    double profit;
    return profit = ((ns * sp) - sc) - ((ns *pp) + pc);
  }


 }

Строковые продажи не работают должным образом.N или Y вообще не отображается.

Вот мой файл.

AXC 25 54 9,11 6,98 20 N CLR 24 449,68 8,63 50 N UPQ 38 52 4,95 5,24 30 Y SLS 46 51 7,29 4,95 50 лет MOP 20 32 4,95 6,58 50 N NRK 19 43 5,25 7,74 60 N COP 48 29 6,62 5,06 30 Y SRY 19 52 4,95 9,32 50 N MPL 25 36 8,34,95 20 лет RRZ 24 51 4,95 5,46 20 N XON 14 33 4,95 7,41 40 N LSW 18 50 4,95 4,95 30 N

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете отформатировать значение с помощью класса DecimalFormat:

DecimalFormat df = new DecimalFormat("###.##");
System.out.println(df.format(PI));

ИЛИ

Округление Doubles с BigDecimal Чтобы округлить с точностью до n десятичных знаков, мы можем написать вспомогательный метод:

private static double round(double value, int places) {
    if (places < 0) throw new IllegalArgumentException();
    BigDecimal bd = new BigDecimal(Double.toString(value));
    bd = bd.setScale(places, RoundingMode.HALF_UP);
    return bd.doubleValue();
}

Вы можете использовать вышеуказанный метод для создания любого значения в любой точке десятичного значения.

...