java算小数_Java 小数精确计算问题

Java 小数精确计算问题

System.out.println(2.00 -1.10);//0.8999999999999999

上面的计算出的结果不是0.9,而是一连串的小数。问题在于1.1 这个数字不能被精确表示

为一个double,因此它被表示为最接近它的double 值,该程序从2 中减去的就是这个值,

但这个计算的结果并不是最接近0.9 的double值。

一般地说,问题在于并不是所有的小数都可以用二进制浮点数精确表示。

二进制浮点对于货币计算是非常不适合的,因为它不可能将1.0 表示成10 的其他任何负次

幂。

解决问题的第一种方式是使用货币的最小单位(分)来表示:System.out.println(200-110);//90

第二种方式是使用BigDecimal,但一定要用BigDecimal(String)构造器,而千万不要用

BigDecimal(double)来构造(也不能将float或double型转换成String再来使用BigDecimal(String)

来构造,因为在将float或double转换成String时精度已丢失)。例如new BigDecimal(0.1),它

将返回一个BigDecimal,也即

0.1000000000000000055511151231257827021181583404541015625,正确使用BigDecimal,程

序就可以打印出我们所期望的结果0.9:

System.out.println(new BigDecimal("2.0").subtract(new BigDecimal("1.10")));// 0.9

另外,如果要比较两个浮点数的大小,要使用BigDecimal的compareTo方法。

相关文档:

public class Test {

public static void main(String args[]) {

System.out.println(Integer.toBinaryString(20));   //十进制-->2进制

System ......

受到“15年你积累了什么”一文的震动,特别收集该文学习

Java gc

关键字: java gc, 垃圾回收机制

1.JVM的gc概述

gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存。java语言并不要求jvm有gc,也没有规定gc如何工作。不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收 ......

JAVA文件操作总结

File类

File f = new File(path);

path为实际路径,该路径可以是文件,或文件夹,也可以是不存在的。

f.exists() 可以判断该路是否存在。

f.isDirectory() 可以判断是否是文件夹。

f.mkdirs(); 递归创建文件夹

File和输入输出流之间纽带FileInutStream,FileOutputStream

URL url = new URL(strUr ......

昨天看到这样一篇帖子,讨论类加载顺序的,也可以说是初始化顺序的,今天早上找不到了,本来想回复的,现在自己写博客回复了,呵呵

public class Singleton {

private static Singleton obj = new Singleton();

public static int counter1 ;

public static int counter2 = 0;& ......

annotations : 注释

好处

1.文档编制

2.编译器检查

3.代码分析

JSR 175 是编程语言的元数据工具,为将元数据合并到核心java语言中提供正式理由和说明

基本知识:

注释采用"@"标记形式,后面是注释名称,然后在需要数据时,通过name=value对向注释提供数据

注释的三个基本种类:

标记注释 ......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值