double精度上就是这样的,关于这个方面的很多,你搜索一下~! NumberFormat format = new DecimalFormat("#0.00"); double a = 1.9; double b = 0.3; double d = Double.valueOf(format.format(a + b));
因为Java中双精度浮点数占64位,八个字节。 如果想保留一定位数,可作如下处理!import java.text.*; public class DoubleTest { public static void main(String[] args) { DecimalFormat format = new DecimalFormat("0.0"); double a = 1.9; double b = 0.3; double d = Double.valueOf(format.format(a + b)); System.out.println(a+"+"+b+"="+d);//这样就是2.2了 } }
NumberFormat format = new DecimalFormat("#0.00");
double a = 1.9;
double b = 0.3; double d = Double.valueOf(format.format(a + b));
如果想保留一定位数,可作如下处理!import java.text.*;
public class DoubleTest
{
public static void main(String[] args)
{
DecimalFormat format = new DecimalFormat("0.0");
double a = 1.9;
double b = 0.3;
double d = Double.valueOf(format.format(a + b));
System.out.println(a+"+"+b+"="+d);//这样就是2.2了
}
}
故会出现你那样的结果
推荐用2楼的做法
如果要按照自己的想要的格式输出的话,用format。
实现:
多商品输入,统一输出,单价数量合计,税率计算;
未实现:
多单统一输入,统一分单输出。import java.io.*;
import java.util.*;
import java.text.*;public class Pos {
public static void main(String[] args) throws Exception{
NumberFormat format = new DecimalFormat("#0.00");
boolean estimate = false;
double cess;
double summation = 0;
double cessed;
String in = null;
List l = new ArrayList();
BufferedReader dis = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入商品税率:");
cess = Double.parseDouble(dis.readLine());
while ( in != "exit") {
System.out.println("请输入一个商品,输入exit则结束输入:");
System.out.println("输入商品名称(以回车键结束):");
in = dis.readLine();
if (in.equals("exit")) {
System.out.println("系统退出,打印数据.");
break;
}
Commodity cd = new Commodity();
cd.name = in;
System.out.println("输入商品数量(以回车键结束):");
in = dis.readLine();
while (estimate == false) {
estimate = true;
try {
cd.amount = Double.parseDouble(in);
} catch (NumberFormatException e ) {
System.out.println("输入错误,重新输入商品数量(以回车键结束):");
in = dis.readLine();
estimate = false;
}
}
estimate = false;
System.out.println("输入商品单价(以回车键结束):");
in = dis.readLine();
while (estimate == false) {
estimate = true;
try {
cd.price = Double.parseDouble(in);
} catch (NumberFormatException e ) {
System.out.println("输入错误,重新输入商品单价(以回车键结束):");
in = dis.readLine();
estimate = false;
}
}
l.add(cd);
estimate = false;
}
for (int i = 0; i < l.size(); i++) {
Commodity cTemp = (Commodity)l.get(i);
System.out.println(cTemp);
summation = summation + (cTemp.amount * cTemp.price);
}
cessed = summation * cess;
System.out.println("税款:" + format.format(cessed));
System.out.println("总计:" + format.format(summation));
}
}
class Commodity {
public double amount;
public String name = null;
public double price;
Commodity () {
}
Commodity (double amount,String name,double price) {
this.amount = amount;
this.name = name;
this.price = price;
}
public String toString() {
return amount + " " + name + ": " + price;
}
}