62,614
社区成员
发帖
与我相关
我的任务
分享
public class DoubleOut{
public static void write(double amount){
if(amount>0){
System.out.print('$');
writePositive(amount);
}else{
double positiveAmount=-amount;
System.out.print('s');
System.out.print('-');
writePositive(positiveAmount);
}
}//end write()
private static void writePositive(double amount){
int allCents=(int)(Math.round(amount*100));
int dollars=allCents/100;
int cents=allCents%100;
System.out.print(dollars);
System.out.print('.');
if(cents<10){
System.out.print('0');
System.out.print(cents);
}else{
System.out.print(cents);
}
}//end writePositive
public static void writeln(double amount){
write(amount);
System.out.println();
}//end writeln
public static void write(double number,int digit){
if(number>=0){
writePositive(number,digit);
}else{
double positiveNumber=-number;
System.out.print("-");
writePositive(positiveNumber,digit);
}//end if-else
}//end write()
private static void writePositive(double number,int digit){
double digitCopy=digit;
int finalNumber=(int)Math.round(number*Math.pow(10.0,digitCopy));
int integerPart=finalNumber/(int)Math.pow(10.0,digitCopy);
int decimalPart=finalNumber%(int)Math.pow(10.0,digitCopy);
System.out.print(integerPart);
System.out.print(".");
int count=0;
int decimalPartCopy=decimalPart;
while(decimalPartCopy<(int)Math.pow(10.0,digitCopy)){
if(decimalPartCopy==0){
decimalPartCopy=(decimalPartCopy+1)*10;
}else{
decimalPartCopy=decimalPartCopy*10;
}//end if-else
count++;
}//end while
for(int i=1;i<count;i++){
System.out.print("0");
}//end for
System.out.print(decimalPart);
}//end writePositive()
public static void writeln(double number,int digit){
write(number,digit);
System.out.println("");
}//end writeln()
public static void scienceWrite(double number){
if(number>=0){
scienceWritePositive(number);
}else{
double positiveNumber=-number;
System.out.print("-");
scienceWritePositive(positiveNumber);
}
}//end scienceWrite()
private static void scienceWritePositive(double number){
String numberCopy=Double.toString(number);
int theIndexOfThePoint=numberCopy.indexOf(".");
int length=numberCopy.length();
int theIndexOfTheFirst=0;
char theFirst=numberCopy.charAt(theIndexOfTheFirst);
while((theFirst=='0')||(theFirst=='.')){
theIndexOfTheFirst++;
theFirst=numberCopy.charAt(theIndexOfTheFirst);
}
int theNumberAfterE=theIndexOfTheFirst-theIndexOfThePoint;
double theFormatedNumber=number/Math.pow(10.0, theNumberAfterE);
System.out.print(theFormatedNumber);
System.out.print("e");
System.out.print(-theNumberAfterE);
}//end scienceWritePositive()
public static void scienceWriteln(double number){
scienceWritePositive(number);
System.out.println("");
}//end scienceWriteln()
public static void main(String[] args){
DoubleOut.writeln(0.052165);
DoubleOut.writeln(0.052165,3);
DoubleOut.scienceWriteln(0.052165);
}//end main()
}