1.代码
public static void main(String args[]) {
double a = 11540.0;
double b = 0.35;
double result = a * b;
System.out.println("控制台输出:"+a + " * " + b + " = " + result);
System.out.println("计算器正确是:" + 4039 );
}2.输出
控制台输出:11540.0 * 0.35 = 4038.9999999999995
计算器正确是:40393.问题
计算器能计算准确,但是如果我在程序中这样操作却出现了不精确的情况
如何能满足我类型是double,但是计算结果又精确一点的?
或者还有什么更好的替换方法?4.贴尾
请高手指教,临帖涕零,不知所言。
public static void main(String args[]) {
double a = 11540.0;
double b = 0.35;
double result = a * b;
System.out.println("控制台输出:"+a + " * " + b + " = " + result);
System.out.println("计算器正确是:" + 4039 );
}2.输出
控制台输出:11540.0 * 0.35 = 4038.9999999999995
计算器正确是:40393.问题
计算器能计算准确,但是如果我在程序中这样操作却出现了不精确的情况
如何能满足我类型是double,但是计算结果又精确一点的?
或者还有什么更好的替换方法?4.贴尾
请高手指教,临帖涕零,不知所言。
解决方案 »
- jbuilder使用jfreechart的问题
- 小弟初学java, 此小程序有个地方不解,麻烦了各位...
- List 中的对象如何根据某个字段进行排序?急!
- JAVA中如何得到今天是星期几?
- JSF UploadedFile 中 _file.getName()的到的是什么编码来的,怎么换成中文...?谢谢..
- 对话框的文本怎么提取到框架的文本区中
- 请问这种是什么编码“%B7%A2%C8%E7%D1%A9”??
- 哪个大侠帮一下小弟/谢谢了!
- 输入int 数据时为什么要调用getString()
- 哪位有apache与tomcat结合使用的相关配置文档?请告诉小弟,只要是有用的,通统给分!
- java读取网页源代码
- 纯java工程关于jar包的问题
double b = 0.35;
double result = a * b;
BigDecimal a1 = new BigDecimal(Double.toString(a));
BigDecimal b1 = new BigDecimal(Double.toString(b));
BigDecimal result1 = a1.multiply(b1);
System.out.println("控制台输出:" + a + " * " + b + " = " + result);
System.out.println("控制台输出2:" + a1 + " * " + b1 + " = " + result1);
System.out.println("计算器正确是:" + 4039);控制台输出:11540.0 * 0.35 = 4038.9999999999995
控制台输出2:11540.0 * 0.35 = 4039.000
计算器正确是:4039
在有些情况下,可以用化整法。比如你上面两个数,可以都用整型定义,a=11540,b=35,得到结果以后除以100。或者用字符串法,自己写精确的逐位运算方法。
或者痛苦一点,用四舍五入保留若干位小数的方法。
System.out.println("控制台输出:"+a + " * " + b + " = " + resf);
double a = 11540.0;
double b = 0.35;
double result = a * b;
System.out.println("控制台输出:"+a + " * " + b + " = " + result);
System.out.println("计算器正确是:" + 4039 );
BigDecimal aa = new BigDecimal("11540.0");
BigDecimal bb = new BigDecimal("0.35"); result = aa.multiply(bb).doubleValue();
System.out.println("控制台输出:"+a + " * " + b + " = " + result);
System.out.println("计算器正确是:" + 4039 );控制台输出:11540.0 * 0.35 = 4038.9999999999995
计算器正确是:4039
控制台输出:11540.0 * 0.35 = 4039.0
计算器正确是:4039
如果用java做一些财务管理系统,那么对于金钱方面,一般做开发的,都要选择BigDecimal 是吗
如果用java做一些关于财务方面的管理系统
毕竟要涉及到精确的金钱计算,那么我们都必须选择BigDecimal
而不去选择double 是这样吗
既然存在了这么一个数据类型,那么必有他存在的理由。我想,sun当时也考虑到了。所以,要求高精度的数据时,还是用BigDecimal 吧~特别是金融,科研领域中,有时候差一个数据,也会造成很坏的结果
如果用java做一些关于财务方面的管理系统
毕竟要涉及到精确的金钱计算,那么我们都必须选择BigDecimal
而不去选择double 是这样吗
尤其是有关金额方面的数据,一般都用这个。
import java.math.BigDecimal;public class GenericT {
public static void main(String[] ag){
double a = 11540.0;
double b = 0.35;
double c = 35 ;
double result1 = a * b;
BigDecimal a1 = new BigDecimal(Double.toString(a));
BigDecimal b1 = new BigDecimal(Double.toString(b));
BigDecimal result2 = a1.multiply(b1);
System.out.println("result1:" + a + " * " + b + " = " + result1);
System.out.println("result2:" + a1 + " * " + b1 + " = " + result2);
System.out.println("计算器正确是:" + 4039);double result3 = a * c/100;
System.out.println("控制台输出3:" + a + " * " + c + " = " + result3);
}
}